編輯:關於android開發
在Android 5.0 中引入了Material Design的設計理念,並加入了RecyclerView和CardView兩個控件。本文就講解如何使用者兩個控件來實現瀑布流效果(StaggeredGrid)。
先上效果圖
RecyclerView 是一個更加高級和靈活的ListView。它簡化了顯示和處理數據的過程,比如,為positioning item提供了layout 的管理,為item刪除和添加提供了默認的動畫。當然,你也可以自定義這些動畫。
LayoutManger<喎?http://www.Bkjia.com/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
新版飛機大戰游戲安卓源碼項目,飛機大戰安卓 作者nuptboyzhb,源碼newplanegame,新版飛機大戰是一款以真實戰機為模板的飛行射擊類游戲
魅族多機房部署方案我們為什麼要做多機房部署 魅族經過2014-2015年的轉型以及銷量大爆發後,隨之而來的互聯網服務業務越來越多,用戶基數越來越大,之前單機房的擴展架構已
BLE-NRF51822教程3-sdk程序框架剖析nordicBLE 技術交流群498676838本講為框架介紹,不會牽涉到太多代碼細節。 51822的官方SDK其實是
Activity之概覽屏幕(Overview Screen),activityoverview概覽屏幕 概覽屏幕(也稱為最新動態屏幕、最近任務列表或最近使用的應用)是