您的位置:首页 > 其它

仿蘑菇街首页升级版

2016-03-23 15:42 169 查看
最近实在是太忙了,已经很久没写了,感觉再不逼下自己,新年订的每个月写至少1-2篇的计划3月份就要被打破了,这样可不好。上次写了一篇仿蘑菇街首页的demo,用的是自定义了一个ViewGroup的方式,然后又当爹又当妈,写了自己写了滑动,又写了事件的分发拦截,真的是,要写的东西太多了,而且相对也比较的复杂。

今天打算实现基本相同的效果,为了方便起见,把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);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: