모 를 거 야. Coordinator Layout?

Coordinator Layout 에 관 한 블 로 그 를 직접 쓰 려 고 했 는데 이렇게 전면적 인 것 을 보고 불 러 왔 습 니 다.싫 으 면 건 드 리 지 마라.다음으로 불 러 오기:http://blog.csdn.net/xyz_lmn/article/details/48055919
1. Coordinator Layout 는 어떤 역할 을 합 니까?
Coordinator Layout 는 "super - powered FrameLayout" 로 서 기본적으로 두 가지 기능 을 실현 합 니 다. 1. 최상 위 레이아웃 2 로 서 스케줄 조정 서브 레이아웃 을 사용 하려 면 Coordinator Layout 는 Gradle 에 Support Design Library 를 추가 해 야 합 니 다.
compile 'com.android.support:design:23.4.0'

2. Coordinator Layout 와 FloatingAction Button
레이아웃 파일 정의:


    


Coordinator Layout 는 "super - powered FrameLayout" 로 하위 보기 의 android: layot 를 설정 합 니 다.gravity 속성 제어 위치.Activity:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Snackbar.make(view,"FAB",Snackbar.LENGTH_LONG)
                        .setAction("cancel", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                //             Action      

                            }
                        })
                        .show();
            }
        });
    }
}

효과:
fab.gif
FloatingAction Button 은 Coordinator Layout 를 가장 간단하게 사용 하 는 예 입 니 다. FloatingAction Button 은 기본적으로 FloatingAction Button. Behavior 를 사용 합 니 다.
3. Coordinator Layout 와 AppBarLayout
3.1 AppBarLayout 내장 TabLayout 레이아웃 파일 코드:


    

        

        

    

    

    



효과:
tab.gif
효과 표시, 보기 스크롤 시 Toolbar 가 숨겨 집 니 다. 이 효 과 는 Android Support Library 에 추 가 된 Coordinator Layout, AppBarLayout 에서 이 루어 집 니 다.1. scroll: 화면 을 굴 리 려 는 모든 view 는 이 flag 를 설정 해 야 합 니 다. 이 flag 를 설정 하지 않 은 view 는 화면 상단 에 고정 되 어 있 습 니 다.예 를 들 어 TabLayout 에서 이 값 을 설정 하지 않 으 면 화면 상단 에 머 물 것 입 니 다.2. enterAlways: 이 flag 를 설정 할 때 아래로 스크롤 하면 이 view 를 볼 수 있 습 니 다. 빠 른 '되 돌아 가기 모드' 를 사용 합 니 다.3. enterAlways Collapsed: 보기 가 minHeight 속성 을 설정 하고 이 플래그 를 사용 할 때 보 기 는 최소 높이 로 만 들 어 갈 수 있 습 니 다. 스크롤 보기 가 상단 에 도 착 했 을 때 만 전체 높이 로 확 대 됩 니 다.4. exit Until Collapsed: 스크롤 하여 화면 을 종료 하고 마지막 으로 맨 위 에 접 습 니 다.Toolbar 가 굴 러 갈 수 있 도록 Coordinator Layout 에 굴 러 갈 수 있 는 View 를 넣 습 니 다. 위의 예 와 같이 ViewPager 를 넣 었 고 ViewPager 에는 Recyler View 를 넣 었 습 니 다. 즉, 굴 러 갈 수 있 는 View 입 니 다.Coordinator Layout 에 포 함 된 하위 보기 에 스크롤 속성 이 있 는 View 를 설정 하려 면 app: layotbehavior 속성.예 를 들 어 예제 에서 Viewpager 는 이 속성 을 설정 했다.
app:layout_behavior="@string/appbar_scrolling_view_behavior"

Toolbar 가 미 끄 러 지 는 효 과 를 내기 위해 서 는 다음 과 같은 세 가 지 를 해 야 합 니 다.
  • Coordinator Layout 는 레이아웃 의 부모 레이아웃 용기 입 니 다.
  • 미 끄 러 질 구성 요소 에 app: layot 설정scrollFlags = "scroll | enterAlways" 속성 입 니 다.
  • 미 끄 러 지 는 구성 요소 에 app: layot 설정behavior 속성
  • 3.2 AppBarLayout 내장 Collapsing ToolbarLayout 레이아웃 파일:
    
    
    
        
    
            
    
                
    
                
    
            
    
        
    
        
    
            
    
                
    
                    
    
                        
    
                        
    
                    
    
                
              ……
            
    
        
    
        
    
    
    

    효과:
    collapsing.gif
    이런 효 과 는 상세 한 페이지 에서 많이 사용 되 고 개성 화 된 내용 을 보 여 주 며 이미지 가 강 한 흡인력 을 가진다.이 효 과 는 Collapsing ToolbarLayout 에 중점 을 두 었 습 니 다.Collapsing Toolbar Layout 는 Toolbar 의 접 기 효 과 를 실현 할 수 있 습 니 다.CollapsingToolbarLayout 의 하위 보 기 는 LinearLayout 수직 방향 으로 배출 되 는 것 과 유사 합 니 다.CollapsingToolbarLayout 는 다음 과 같은 속성 과 방법 을 제공 합 니 다.
  • Collapsing title: Toolbar 의 제목 입 니 다. Collapsing Toolbar Layout 전체 화면 이 접 히 지 않 았 을 때 title 은 큰 글꼴 을 표시 합 니 다. 접 는 과정 에서 title 은 일정한 크기 로 작 아 집 니 다.setTitle (CharSequence) 방법 으로 title 을 설정 할 수 있 습 니 다.
  • Content scrim: Toolbar 가 상단 에 접 혀 고정 되 었 을 때의 배경 입 니 다. setContentScrim (Drawable) 방법 으로 배경 을 바 꾸 거나 속성 에서 app: contentScrim = 을 사용 할 수 있 습 니까?attr / color Primary 에서 배경 을 바 꿉 니 다.
  • Status bar scrim: 상태 표시 줄 의 배경, 호출 방법 setStatus Barscrim (Drawable).아직 연구 되 지 는 않 았 지만 이 는 안 드 로 이 드 5.0 이상 시스템 에서 만 효과 가 있다.
  • Parallax scrolling children: CollapsingToolbarLayout 가 미 끄 러 질 때 하위 보기 의 시각 차 는 속성 app: layot 를 통 해collapseParallax Multiplier = "0.6" 변경.값 de 의 범위 [0.0, 1.0], 값 이 클 수록 시찰 이 커진다.
  • Collapse Mode: 하위 보기 의 접 기 모드 는 하위 보기 에 설정 되 어 있 으 며 두 가지 "pin" 이 있 습 니 다. 고정 모드 는 접 을 때 마지막 으로 맨 위 에 고정 되 어 있 습 니 다."parallax": 시차 모드 는 접 을 때 시차 접 는 효과 가 있 습 니 다.우 리 는 레이아웃 에서 속성 app: layot 를 사용 할 수 있 습 니 다.collapse Mode = "parallax" 를 바 꿉 니 다.

  • Coordinator Layout 는 layot 도 제공 합 니 다.anchor 의 속성, layotanchorGravity 와 함께 다른 보기 와 연 결 된 부유 보기 (예 를 들 어 FloatingActionButton) 를 배치 할 수 있 습 니 다.이 예 에 서 는 FloatingAction Button 을 사용 합 니 다.
    아래 매개 변 수 를 통 해 FloatingAction Button 의 위 치 를 설정 하 였 으 며, 두 속성 이 공통 적 으로 작용 하여 FAB 부동 버튼 도 접 고 사라 지게 하여 보 여 줍 니 다.
    app:layout_anchor="@id/appbar"
    app:layout_anchorGravity="bottom|right|end"
    

    CollapsingToolbarLayout 를 사용 하여 접 기 효 과 를 실현 하려 면 3 가지 주의 가 필요 합 니 다.
  • AppBarLayout 의 높이 고정
  • CollapsingToolbarLayout 의 하위 보기 설정 layotcollapseMode 속성
  • 관련 부유 보기 설정 app: layotanchor,app:layout_anchorGravity 속성
  • 4. 사용자 정의 행동
    Coordinator Layout 의 기능 이 이렇게 강 한데 그의 신기 한 점 은 Behavior 대상 이다. Coordinator Layout 는 자신 이 View 를 통제 하지 않 고 모든 통제 권 이 Behavior 에 있다 는 것 이다.앞 에는 Floating Action Button. Behavior, AppBarLayout. Behavior, AppBarLayout. ScrollingView Behavior 라 고 적 혀 있 습 니 다.AppBarLayout 에는 두 개의 Behavior 가 있 는데 하 나 는 자신 에 게 사용 하 는 것 이 고 다른 하 나 는 형제 에 게 사용 하 는 것 이다.이 Behavior 들 은 복잡 한 통제 기능 을 실현 했다.시스템 의 Behavior 는 한계 가 있 기 때문에 우 리 는 사용자 정의 방식 으로 자신의 Behavior 를 실현 할 수 있다.
    Coordinator Layout. Behavior (YourView. Behavior. class) 를 통 해 자신의 Behavior 를 정의 하고 layot 파일 에 app: layot 를 설정 합 니 다.behavior = "com. example. app. YourView $Behavior" 로 효 과 를 냅 니 다.
    사용자 정의 Behavior 는 두 가지 방법 을 다시 써 야 합 니 다.
    public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) 
    public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency)
    

    아래 의 예 를 들 어 FloatingAction Button 을 누 르 면 90 도 회전 하고 Snackbar 에 적합 합 니 다.
    public class RotateBehavior  extends CoordinatorLayout.Behavior {
        private static final String TAG = RotateBehavior.class.getSimpleName();
    
        public RotateBehavior() {
        }
    
        public RotateBehavior(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
            return dependency instanceof Snackbar.SnackbarLayout;
        }
    
        @Override
        public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
            float translationY = getFabTranslationYForSnackbar(parent, child);
            float percentComplete = -translationY / dependency.getHeight();
            child.setRotation(-90 * percentComplete);
            child.setTranslationY(translationY);
            return false;
        }
    
        private float getFabTranslationYForSnackbar(CoordinatorLayout parent,
                                                    FloatingActionButton fab) {
            float minOffset = 0;
            final List dependencies = parent.getDependencies(fab);
            for (int i = 0, z = dependencies.size(); i < z; i++) {
                final View view = dependencies.get(i);
                if (view instanceof Snackbar.SnackbarLayout && parent.doViewsOverlap(fab, view)) {
                    minOffset = Math.min(minOffset,
                            ViewCompat.getTranslationY(view) - view.getHeight());
                }
            }
    
            return minOffset;
        }
    }
    

    레이아웃 파일:
    
        
    
    

    효과 그림:
    behavior.gif
    위 설명 을 통 해 기본적으로 Coordinator Layout 의 사용 방식 을 덮어 씁 니 다.
    여기 서 다시 한 번 감 사 드 립 니 다.http://blog.csdn.net/xyz_lmn/article/details/48055919

    좋은 웹페이지 즐겨찾기