編輯:關於Android編程
在Android 5.0 中引入了Material Design的設計理念,並加入了RecyclerView和CardView兩個控件。本文就講解如何使用者兩個控件來實現瀑布流效果(StaggeredGrid)。
先上效果圖
RecyclerView 是一個更加高級和靈活的ListView。它簡化了顯示和處理數據的過程,比如,為positioning item提供了layout 的管理,為item刪除和添加提供了默認的動畫。當然,你也可以自定義這些動畫。
LayoutManger<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPr72tqhSZWN5Y2xlclZpZXfW0NSqy9i1xM671sO6zbrOyrHW2NPDxMfQqbK71NnP1Mq+tcRpdGVtoaNMYXlvdXRNYW5hZ2Vyzai5/bHcw+K0tL2osrux2NKqtcR2aWV3us2yu7X308O30cqxtcRmaW5kVmlld0J5SWQoKSDAtMzhuN/Qp8LKoaM8YnIgLz4NClJlY3ljbGVyVmlld8zhuanBy8j91tbE2r2otcRMYXlvdXRNYW5nZXKjujwvcD4NCjxzdHJvbmc+TGluZWFyTGF5b3V0TWFuYWdlcjwvc3Ryb25nPiC0udaxu/LV38uuxr21xL/J0tS7rLavtcRsaXN0IDxzdHJvbmc+R3JpZExheW91dE1hbmFnZXI8L3N0cm9uZz4g0tRncmlktcS3vcq9z9TKviA8c3Ryb25nPlN0YWdnZXJlZEdyaWRMYXlvdXRNYW5hZ2VyPC9zdHJvbmc+INLUxtmyvMH3tcTQzsq9z9TKvqOosb7OxNbYteMgKKHRdqHRKeDFo6kNCjxoMyBpZD0="動畫">動畫
RecyclerView是有默認的添加刪除item的動畫的,如果想要自定義這些動畫,繼承RecyclerView.ItemAnimator 這個類,並使用RecyclerView.setItemAnimator() 這個方法。 activity_recycler_view.xml view_holder.xml Activity 這裡的Adaper是一個數據和UI之間的橋梁,把數據顯示在UI上。 關於RecyclerView.Adapter 的說明: 以下三個方法是必須要實現的。 CardView繼承自FrameLayout,利用它可以使你的信息在卡片中顯示,並且在不同的平台中具有一致性。 RecyclerView 和 CardView是v7 Support Libraries的一部分,所以需要在你app的Gradle dependencies 裡加入以下內容: dependencies { activity_recycler_view.xml Activity ViewHolder例子
public class RecyclerViewActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private String[] myDataset = {1, 2, 3, 4, 5, 6, 7};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mLayoutManager);
// specify an adapter (see also next example)
mAdapter = new MyAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
}
}
下面一個例子是一個簡單的Adapter實現。
class MyAdapter extends RecyclerView.Adapter
- onCreateViewHolder 返回每一個Item的ViewHolder
- onBindViewHolder 給Item中的控件賦值
- getItemCount 返回Item的個數效果
CardView
利用以下的屬性可以自定義CardView的外觀:
card_view:cardCornerRadius 設置圓角的半徑
CardView.setRadius 在代碼中設置圓角的半徑
card_view:cardBackgroundColor 設置卡片的背景例子
依賴的包
…
compile ‘com.android.support:cardview-v7:21.0.+’
compile ‘com.android.support:recyclerview-v7:21.0.+’
}實現瀑布流效果(StaggeredGrid)
效果
public class RecyclerViewActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private String[] myDataset = {1, 2, 3, 4, 5, 6, 7,1, 2, 3, 4, 5, 6, 7};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mLayoutManager);
// specify an adapter (see also next example)
mAdapter = new MyAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
}
}
class MyAdapter extends RecyclerView.Adapter
本次分析的是github上一個用於下拉刷新上拉加載的控件XListView,這個開源的ListView相信大家在開發的過程中會經常用到。https://github.co
1.MVP簡介:隨著UI創建技術的功能日益增強,UI層也履行著越來越多的職責。為了更好地細分視圖(View)與模型(Model)的功能,讓View專注於處理數據的可視化以
綜述內存洩漏(memory leak)是指由於疏忽或錯誤造成程序未能釋放已經不再使用的內存。那麼在Android中,當一個對象持有Activity的引用,如果該對象不能被
ViewPager這個小demo實現的是可以左右循環滑動圖片,下面帶索引,滑到最後一頁在往右滑動就要第一頁,第一頁往左滑動就到最後一頁,先上效果圖:1、首先看一些layo