第六周安卓开发学习总结(2)

写在前面

这个其实是上周学的,但学到一半多,由于各种事情都没能继续下去。趁着周一有时间就学完了。
主要学习了一个控件——RecyclerView的使用。RecyclerView是一个十分强大的控件,可以用它来替代listview,gridview,stagger(瀑布流)等效果,并且可以实现自定义条目。是一个十分好使的控件。
本文代码github链接:https://github.com/wushenjiang/RecyclerViewDemo

导入包

在使用前,需要先导入相关的包。我们右键项目,选择,打开管理器。
在管理器中,选择

,选择library Dependency,在出来的界面输入recyclerview

即可使用强大的RecyclerView了!

菜单栏的编写

为了在同一个activity实现展示,我们要先写一个简单的菜单。
新建一个menu.xml,如下代码:

 <menu>
  <item android:title="ListView效果"
        android:id="@+id/list_view">
        <menu>
            <item android:title="垂直标准"
                android:id="@+id/list_view_vertical_standard"></item>
            <item android:title="垂直反向"
                android:id="@+id/list_view_vertical_reverse"></item>
            <item android:title="水平标准"
                android:id="@+id/list_view_horizontal_standard"></item>
            <item android:title="水平反向"
                android:id="@+id/list_view_horizontal_reverse"></item>
        </menu>
    </item>
    <item android:title="GridView效果"
        android:id="@+id/grid_view">
    <menu>
        <item android:title="垂直标准"
            android:id="@+id/grid_view_vertical_standard"></item>
        <item android:title="垂直反向"
            android:id="@+id/grid_view_vertical_reverse"></item>
        <item android:title="水平标准"
            android:id="@+id/grid_view_horizontal_standard"></item>
        <item android:title="水平反向"
  </item>
    <item android:title="瀑布流效果"
        android:id="@+id/stagger_view"
        >
        <menu>
            <item android:title="垂直标准"
                android:id="@+id/stagger_view_vertical_standard"></item>
            <item android:title="垂直反向"
                android:id="@+id/stagger_view_vertical_reverse"></item>
            <item android:title="水平标准"
                android:id="@+id/stagger_view_horizontal_standard"></item>
            <item android:title="水平反向"
                android:id="@+id/stagger_view_horizontal_reverse"></item>
        </menu>
    </item>
    <item
        android:title="多种条目类型"
        android:id="@+id/multi_type"
        >
    </item>
</menu>

我们在mainactivity调用这个xml:

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        switch(itemId){
            //ListView部分
            case R.id.list_view_vertical_standard:
                Log.d(TAG,"点击了ListView的垂直标准");
                showList(true,false);
                break;
            case R.id.list_view_vertical_reverse:
                Log.d(TAG,"点击了ListView的垂直反向");
                showList(true,true);
                break;
            case R.id.list_view_horizontal_standard:
                Log.d(TAG,"点击了ListView的水平标准");
                showList(false,false);
                break;
            case R.id.list_view_horizontal_reverse:
                Log.d(TAG,"点击了ListView的水平反向");
                showList(false,true);
                break;
                //GridView部分
            case R.id.grid_view_vertical_standard:
                Log.d(TAG,"点击了GridView的垂直标准");
                showGrid(true,false);
                break;
            case R.id.grid_view_vertical_reverse:
                Log.d(TAG,"点击了GridView的垂直反向");
                showGrid(true,true);
                break;
            case R.id.grid_view_horizontal_standard:
                Log.d(TAG,"点击了GridView的水平标准");
                showGrid(false,false);
                break;
            case R.id.grid_view_horizontal_reverse:
                Log.d(TAG,"点击了GridView的水平反向");
                showGrid(false,true);
                break;
                //瀑布流部分
            case R.id.stagger_view_vertical_standard:
                Log.d(TAG,"点击了瀑布流的垂直标准");
                showStagger(true,false);
                break;
            case R.id.stagger_view_vertical_reverse:
                Log.d(TAG,"点击了瀑布流的垂直反向");
                showStagger(true,true);
                break;
            case R.id.stagger_view_horizontal_standard:
                Log.d(TAG,"点击了瀑布流的水平标准");
                showStagger(false,false);
                break;
            case R.id.stagger_view_horizontal_reverse:
                Log.d(TAG,"点击了瀑布流的水平反向");
                showStagger(false,true);
                break;
            //多种条目类型被点击了
            case R.id.multi_type:
                //跳到一个新的Activity里面来实现这个功能
                Intent intent  = new Intent(this,MultiTypeActivity.class);
                startActivity(intent);
                break;

        }
        return super.onOptionsItemSelected(item);
    }

实现listview(gridview,stagger)效果

由于实现这三个都是类似的,这里直接统一起来,只说一下思路。需要代码的就请从上面的github里查看。
首先设置布局管理器,设置其属性,然后创建适配器,并把适配器联系到RecyclerView去即可。关于适配器的设置请看github.

实现下拉刷新

下拉刷新需要用到一个控件SwipeRefreshLayout,也是同样的导包方法。直接包裹住RecyclerView即可。之后在mainactivity中重写方法即可。

效果展示

listview竖直

gridview竖直

瀑布流效果

listview水平

gridview水平

瀑布流水平

多种条目类型

猜你喜欢

转载自www.cnblogs.com/wushenjiang/p/12601506.html
今日推荐