仿蘑菇街首页升级版
2016-03-23 15:42
169 查看
最近实在是太忙了,已经很久没写了,感觉再不逼下自己,新年订的每个月写至少1-2篇的计划3月份就要被打破了,这样可不好。上次写了一篇仿蘑菇街首页的demo,用的是自定义了一个ViewGroup的方式,然后又当爹又当妈,写了自己写了滑动,又写了事件的分发拦截,真的是,要写的东西太多了,而且相对也比较的复杂。
今天打算实现基本相同的效果,为了方便起见,把ViewPager换成了RecyclerView,其实道理是基本一样的,但是实现起来绝对的简单方便轻松愉快,安卓6.0给我们准备了一个超棒超棒的控件,CoordinatorLayout,简简单单的写几行代码就能实现之前很繁琐的效果,特意写了两个demo,一个用上一篇的事件分发机制来处理,一个就是超级超级方便的布局就可以搞定,重点介绍CoordinatorLayout。
直接上代码:
这是布局文件,也就是重点的重点:
之后就是在MainActivity里把RecyclerView填充一下了:
今天打算实现基本相同的效果,为了方便起见,把ViewPager换成了RecyclerView,其实道理是基本一样的,但是实现起来绝对的简单方便轻松愉快,安卓6.0给我们准备了一个超棒超棒的控件,CoordinatorLayout,简简单单的写几行代码就能实现之前很繁琐的效果,特意写了两个demo,一个用上一篇的事件分发机制来处理,一个就是超级超级方便的布局就可以搞定,重点介绍CoordinatorLayout。
直接上代码:
这是布局文件,也就是重点的重点:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:card_view="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.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:orientation="vertical" app:elevation="0dp" app:layout_behavior="com.jiangjieqiang.xmdddemo.util.FlingBehavior"> <!-- 顶上面的布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" app:layout_scrollFlags="scroll|enterAlwaysCollapsed|enterAlways"> <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp" android:background="@mipmap/btn_avatar_bg"></RelativeLayout> </LinearLayout> <!-- 中间停滞的布局--> <RelativeLayout android:layout_width="match_parent" android:layout_height="100dp" android:background="#000000"> </RelativeLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/recycler_main" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> </RelativeLayout>
之后就是在MainActivity里把RecyclerView填充一下了:
public class MainActivity extends AppCompatActivity { @Bind(R.id.recycler_main) RecyclerView recyclerView; private List<String> mDatas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); initData(); initRecycler(); } private void initData() { mDatas = new ArrayList<String>(); for (int i = 'A'; i < 'z'; i++) { mDatas.add("" + (char) i); } } private void initRecycler() { recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new MyAdapter()); } class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from( MainActivity.this).inflate(R.layout.layout_item, parent, false)); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View view) { super(view); tv = (TextView) view.findViewById(R.id.text_num); } } } }
相关文章推荐
- C#再识委托
- maven找不到jconsole-1.8.0.jar和tools-1.8.0.jar包
- pace.js – 网页自动加载进度条插件
- Flex布局的兼容性
- OpenWrt 15.05.1“Chaos Calmer”发布 支持诸多新设备和新功能
- OC学习——OC中的@protocol(@required、@optional)、代理设计模式
- WebApp之 apple-touch-icon
- openssl将私钥和crt证书合成pfx证书
- 不变模式immutable
- HDOJ 1698 Just a Hook (线段树区间更新求区间和)
- JavaScript 闭包解析
- PHP学习-验证用户名密码
- 【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!
- NASM/MASM
- GooglePlay内购In-app Billing 总结~
- Python中string与Datetime,timestamp的各种转换
- javaScript日期对象格式化
- 怎么查看oracle数据库数据量大小?
- less中的变量使用
- utf-8编码问题之urlencode和getbytes得到的utf-8区别验证测试