본문 바로가기

android

[Android] TabLayout with ViewPager 에서 tab을 클릭 했을 때 TabLayout을 사용할 때, OnClickListener는 먹히지 않습니다. TabLayout의 자식뷰에 OnClickListener가 설정이 되지 않는 것이 원인 입니다.(만약, addTab을 이용하여 추가할 경우 해당 View에 setTag,getTag로 구분으로 줘서 이용해도 될것이다.) 대부분 ViewPager와 TabLayout을 아래와 같이 설정 할 것이다. FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getActivity().getSupportFragmentManager()); TabLayout tabs = (TabLayout) mRootView.findViewById(R.id.tabLayout); ViewPager view.. 더보기
[Android] Fragment transition 이용시 SomeFragment fragment = SomeFragment.newInstance(bitmap); FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { fragment.setSharedElementEnterTransition(new DetailsTransition()); fragment.setEnterTransition(new Fade()); fragment.setExitTransition(new Fade()); fragment.setSharedElementReturnTransition(ne.. 더보기
[Android] Tablayout이 보이지 않을 때 TabLayout을 사용하면 Tab과 ViewPager를 손쉽게 연결 시켜서 사용할 수 있습니다.정말 편하고 안정적으로 이용할 수 있는데요. 사용하다가보면 갑자기 TabLayout이 안보이는 현상이 일어납니다.레이아웃은 차지하고 있는데... indicator와 text만 보이지 않을때가 있습니다. 왜왜??? 열심히 구글링을 해보니 역시나 바로 결론이 안나오더군요. 원인은 TabLayout이 아직 로딩되지 않은 상태에서 TabLayout을 셋팅하는 함수를 호출해서 화면에 출력이 되지 않은듯 합니다. 해결책!tabLayout.post(new Runnable() { @Override public void run() { tabLayout.setupWithViewPager(mViewPager); tabLayout.. 더보기
[Android] LayoutInflater 사용시 주의점 혹시 아래와 같이 소스를 사용하시는 분! LayoutInflater layoutInflator = LayoutInflater.from(getContext()); 특히, getview 안이나 자주 호출되는 함수, 반복문에 사용할때 아래 글을 읽어주세요. 위와 같이 사용하면 아래와 같은 warning과 함께 버벅 대기 시작합니다. Skipped xx frames! The application may be doing too much work on its main thread. 이럴 경우 LayoutInflater를 호출 할때 아래와 같이 이용하세요.LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER.. 더보기
[Android] Project에 Proguard 적용 하기 ProGuard를 적용하는 방법은 쉽습니다. build.gradle 파일 에 아래 소스만 넣어주면 땡입니다. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } minifyEnabled true 를 해주면 클래스나 변수 명이 a,b,c등으로 구분 됩니다.(runproguard true 는 에러(Could not find method runProguard() for arguments)가 발생 하므로 위 내용으로 사용 합니다.) 하!지!만! 역시 쉬운일은 없나 보더라구요.위와 같이 설정을 하면 빌드 시, waring이 좌르를 뜨거나.. 더보기
[Android] getBaseContext, getApplicationContext 설명 SharedPreferences를 사용하다 분명 같은 어플리케이션인데 다른 class에서 값을 못가져오는 문제가 있어서그때 좀 알아봤었는데 일단 영어를 잘하지 못해 제 나름도로 이해하고 해석한건 이렇습니다. View.getContext()현재 실행되고 있는 View의 context를 return 하는데 보통은 현재 활성화된 activity의 context가 된다. Activity.getApplicationContext()어플리케이션의 Context가 return된다. 현재 activiy의 context 뿐만 아니라 application의 lifeCycle에 해당하는 Context가 사용된다. ContextWrapper.getBaseContext()자신의 Context가 아닌 다른 Context를 acce.. 더보기
[Android] OnGlobalLayoutListener: deprecation and compatibility @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public static void removeOnGlobalLayoutListener(View v, ViewTreeObserver.OnGlobalLayoutListener listener){ if (Build.VERSION.SDK_INT 더보기
[Android] android.support.v4.app.fragment.getallowreturntransitionoverlap 안드로이드 L 버전부터 Materail Design으로 표현할 수 있는 애니메이션이 많습니다. Fragment로 이동할 때, View마다 연결을 해서 애니메이션 효과를 줄 수 있는데요. ( 아래 블로그 내용 참고 : ) 제가 Tab과 ViewPager로 이동 하면서 아래와 같은 Exception이 발생 했습니다. java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v4.app.Fragment.getAllowEnterTransitionOverlap()' on a null object reference at android.support.v4.app.BackStackRecord.configureTran.. 더보기