CoordinatorLayout简介

CoordinatorLayout是在 Google IO/15 大会发布的,遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的效果

CoordinatorLayout简介通常用来 干什么

点击打开链接    Google官方地址

CoordinatorLayout is intended for two primary use cases:

As a top-level application decor or chrome layout

As a container for a specific interaction with one or more child views

简单来说:

  • 作为最上层的View
  • 作为一个 容器与一个或者多个子View进行交互

下面我来实现一个效果,就是头部是viewPager滚动轮播,中心是菜单栏,菜单栏是粘性的,底部是数据展示,当然了这将会使用到coordinatorLayout让中心菜单栏粘起来,具体看下面的代码吧。。。

xml文件代码

<?xml version="1.0" encoding="utf-8"?>                                        

java代码如下

package com.example.coordinatorlayoutdemo;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ViewPager viewPager;//头布局    private List list;//盛放ImageView的集合    private int[] a = new int[]{R.drawable.andriod, R.drawable.andriod0, R.drawable.andriod2, R.mipmap.ic_launcher};    private TextView tv;//数据列表    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewPager = findViewById(R.id.viewpager);        tv = findViewById(R.id.tv);        initList();//初始化数据源        initVp();//初始化viewpager        initEvent();//初始化点击事件    }    private void initList() {        StringBuilder sb = new StringBuilder();        for (int i = 0; i < 50; i++) {            sb.append("今天是第" + (i + 1) + "天\n");        }        String s = sb.toString();        tv.setText(s);    }    private void initVp() {        list = new ArrayList<>();        for (int i = 0; i < a.length; i++) {            View v = View.inflate(this, R.layout.item, null);            ImageView mimg = (ImageView) v.findViewById(R.id.img);            mimg.setImageResource(a[i]);            list.add(mimg);        }        MyAdapter adapter = new MyAdapter(list);        viewPager.setAdapter(adapter);    }    private void initEvent() {        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }}

viewPager滑动需要使用适配器代码如下

package com.example.coordinatorlayoutdemo;import android.support.annotation.NonNull;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.view.ViewParent;import android.widget.ImageView;import java.util.List;/** * Created by 亮亮 on 2018/3/27. */public class MyAdapter extends PagerAdapter {    private List imgList;    public MyAdapter(List imgList){        this.imgList=imgList;    }    @Override    public int getCount() {        return imgList.size();    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        int p=position%imgList.size();        ImageView img=imgList.get(p);        ViewParent vp=img.getParent();        if(vp!=null){            ViewGroup parent=(ViewGroup) vp;            parent.removeView(img);        }        container.addView(imgList.get(p));        return imgList.get(p);    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        int p=position%imgList.size();        container.removeView(imgList.get(p));    }}

下面我们来看下效果吧

有一个item布局没贴上,好了效果就是你滑动的时候中间的菜单栏可以粘起来是不是很low呢,哈哈哈哈,就这样吧!!!



更多相关文章

  1. Android自定义控件:Android(安卓)L控件点击水波纹的实现(源码 + De
  2. Android动画开发之Animation动画效果
  3. Android: ListView排序及过滤
  4. Android(安卓)图标外发光
  5. Android(安卓)多种跑马灯的方法
  6. 关于android的pan_display
  7. [Android]使用Dagger 2依赖注入 - 图表创建的性能
  8. Android学习笔记之:android更新ui的几种常用方法
  9. 搭建android开发环境所需的工具,以及相应的下载地址

随机推荐

  1. android图片压缩质量参数Bitmap.Config R
  2. android sdk 升级出错及解决方案
  3. Android 远程调试 JNI 实现
  4. WebView及js
  5. Java简单模拟Android中Handler-Message机
  6. android限制输入框长度与限制输入数字
  7. Android View的属性
  8. android 绿色开发环境
  9. [Android Pro] 完美Android Cursor使用例
  10. Android:通过Camera进行拍照