因为实在不会上传GIF的图片Demo所以我把整个代码全部上传上来,自己看一下吧。
首先需要把库文件依赖进来,我用的是android studio 加载进来就可以了。ECLIPSE的同学请网上下载jar包或者找一下吧,我也没用过
这里有一个需要注意,就是你的studio的
compileSdkVersion 24
这里sdk的版本多少,下面就改成多少,不然会提示错误的。比如我下面的都是24。
compile 'com.android.support:recyclerview-v7:24.2.0' compile 'com.android.support:design:24.0.0'
Main.Activity
public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDate(); Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed();//这里的点击事件加不加都可以。 } }); //使用CollapsingToolbarLayout必须把title设置到CollapsingToolbarLayout上,设置到Toolbar上则不会显示 CollapsingToolbarLayout mCollapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout); mCollapsingToolbarLayout.setTitle("ToolBarTest"); //通过CollapsingToolbarLayout修改字体颜色 mCollapsingToolbarLayout.setExpandedTitleColor(Color.WHITE);//设置还没收缩时状态下字体颜色 mCollapsingToolbarLayout.setCollapsedTitleTextColor(Color.GREEN);//设置收缩后Toolbar上字体的颜色 } /** * RecyclerView Item的加载 */ private void initDate(){ mRecyclerView = (RecyclerView) this.findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); List<Integer> datas = new ArrayList<>(); for (int i = 0; i < 100; i++) { datas.add(i); } mRecyclerView.setAdapter(new MyRecyclerViewAdapter(this, datas)); }
}
activity_main.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="256dp" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="#30469b" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7" /> <android.support.v7.widget.Toolbar app:layout_collapseMode="pin" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <LinearLayout app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout> </android.support.design.widget.CoordinatorLayout>这里需要注意几点。
1:
<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="#30469b" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed">
app:layout_scrollFlags="scroll|exitUntilCollapsed"exitUntilCollapsed: 滚动退出屏幕,最后折叠在顶端
scroll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部
2:
<android.support.v7.widget.Toolbar app:layout_collapseMode="pin" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" />
这里设置Tollbar的时候高必须用这个,要是换成平时的match_parent不管用,这个可以自己点进去看一下。这两处设置之后基本就可以滑动。别的子控件下的app:layout我试了,删除之后也没啥影响,自己可以试一下。
再来看看RecyclerView
RecyclerView是类似与强化版的listview最大的区别在于listview item是规则化的排列,RecyclerView可以无序化,所谓的------瀑布流
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyViewHolder> { private List<Integer> datas; private Context context; private List<Integer> lists; public MyRecyclerViewAdapter(Context context, List<Integer> datas) { this.context = context; this.datas = datas; getRandomHeights(datas); } private void getRandomHeights(List<Integer> datas) { lists = new ArrayList<>(); for (int i = 0; i < datas.size(); i++) { lists.add((int) (200 + Math.random() * 400)); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.layout_item, parent, false); MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { ViewGroup.LayoutParams params = holder.itemView.getLayoutParams(); params.height = lists.get(position);//把随机的高度赋予item布局 holder.itemView.setLayoutParams(params); holder.mTextView.setText(position+""); } @Override public int getItemCount() { return datas.size(); } } class MyViewHolder extends RecyclerView.ViewHolder { TextView mTextView; public MyViewHolder(View itemView) { super(itemView); mTextView = (TextView) itemView.findViewById(R.id.item_tv); } }
item。xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#33ff0000" android:layout_margin="10dp" android:layout_height="match_parent"> <TextView android:id="@+id/item_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_centerInParent="true" android:textSize="25sp" /> </RelativeLayout>
到这里基本就可以说完了,因为没有上传过gif图片,和demo确实不会,也懒得去研究这个,不过上面的代码,自己创建一个项目,复制就可以。如果RecyclerView不会,写成Listview也可以,我也是想试试这个新东西,所以自己试了一下手。