




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android如何使用RecyclerView仿美團(tuán)分類界面
這篇文章給大家分享的是有關(guān)Android如何使用RecyclerView仿美團(tuán)分類界面的內(nèi)容。在下覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨在下過來(lái)看看吧。RecyclerView目前來(lái)說(shuō)對(duì)大家可能不陌生了。由于在公司的項(xiàng)目中,我們一直用的listview和gridview。某天產(chǎn)品設(shè)計(jì)仿照美團(tuán)的分類界面設(shè)計(jì)了一個(gè)界面,我發(fā)現(xiàn)用gridview不能實(shí)現(xiàn)這樣的效果,所以就想到了RecyclerView,確實(shí)是一個(gè)很好的控件。和大家分享一下。效果圖簡(jiǎn)介RecyclerView與ListView原理是類似的:都是僅僅維護(hù)少量的View并且可以展示大量的數(shù)據(jù)集。RecyclerView用以下兩種方式簡(jiǎn)化了數(shù)據(jù)的展示和處理:*使用LayoutManager來(lái)確定每一個(gè)item的排列方式。*為增加和刪除項(xiàng)目提供默認(rèn)的動(dòng)畫效果用法須知LayoutManager:用來(lái)確定每一個(gè)item如何進(jìn)行排列擺放,何時(shí)展示和隱藏?;厥栈蛑赜靡粋€(gè)View的時(shí)候,LayoutManager會(huì)向適配器請(qǐng)求新的數(shù)據(jù)來(lái)替換舊的數(shù)據(jù),這種機(jī)制避免了創(chuàng)建過多的View和頻繁的調(diào)用findViewById方法(與ListView原理類似)。目前SDK中提供了三種自帶的LayoutManager:LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager代碼布局文件activity_main.xml<?xml
version="1.0"
encoding="utf-8"?>
<RelativeLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#7e6c6c"
tools:context="cn.bluemobi.dylan.recyclerviewdemo.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:background="#FFFFFF"
android:paddingLeft="8dp"
android:paddingBottom="5dp"
android:layout_width="match_parent"
android:layout_height="200dp"
/>
</RelativeLayout>item.xml<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
android:layout_width="70dp"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv"
android:layout_width="60dp"
android:layout_height="75dp"
app:srcCompat="@mipmap/ic_category_0"
/>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:gravity="center"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="TextView"
/>
</LinearLayout>Activity中的代碼RvAdpter.javapackage
cn.bluemobi.dylan.recyclerviewdemo;
import
android.content.Context;
import
android.support.v7.widget.RecyclerView;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.ImageView;
import
android.widget.TextView;
import
java.util.List;
/**
*
Created
by
yuandl
on
2016-11-01.
*/
public
class
RvAdpter
extends
RecyclerView.Adapter<RvAdpter.MyViewHolder>
{
private
Context
context;
private
List<Integer>
datas;
public
RvAdpter(Context
context,
List<Integer>
datas)
{
this.context
=
context;
this.datas
=
datas;
}
@Override
public
MyViewHolder
onCreateViewHolder(ViewGroup
parent,
int
viewType)
{
View
contentView=
LayoutInflater.from(context).inflate(R.layout.item,parent,false);
MyViewHolder
viewHolder=new
MyViewHolder(contentView);
return
viewHolder;
}
@Override
public
void
onBindViewHolder(MyViewHolder
holder,
int
position)
{
holder.imageView.setImageResource(datas.get(position));
holder.tv.setText("分類"+position);
}
@Override
public
int
getItemCount()
{
return
datas==null?0:datas.size();
}
public
class
MyViewHolder
extends
RecyclerView.ViewHolder
{
private
ImageView
imageView;
public
TextView
tv;
public
MyViewHolder(View
itemView)
{
super(itemView);
imageView
=
(ImageView)
itemView.findViewById(R.id.iv);
tv
=
(TextView)
itemView.findViewById(R.id.tv);
}
}
}MainActivity.javapackage
cn.bluemobi.dylan.recyclerviewdemo;
import
android.content.res.Resources;
import
android.graphics.Canvas;
import
android.graphics.Rect;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.support.v7.widget.RecyclerView;
import
android.support.v7.widget.StaggeredGridLayoutManager;
import
android.view.View;
import
java.lang.reflect.Field;
import
java.util.ArrayList;
import
java.util.List;
public
class
MainActivity
extends
AppCompatActivity
{
private
RecyclerView
rv;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv
=
(RecyclerView)
findViewById(R.id.rv);
initData();
}
/**
*
初始化數(shù)據(jù)
*/
private
void
initData()
{
List<Integer>
datas
=
new
ArrayList<>();
for
(int
i
=
0;
i
<
38;
i++)
{
Resources
res
=
getResources();
datas.add(res.getIdentifier("ic_category_"
+
i,
"mipmap",
getPackageName()));
}
/**
*用來(lái)確定每一個(gè)item如何進(jìn)行排列擺放
*
LinearLayoutManager
相當(dāng)于ListView的效果
GridLayoutManager相當(dāng)于GridView的效果
StaggeredGridLayoutManager
瀑布流
*/
rv.setLayoutManager(new
StaggeredGridLayoutManager(2,
StaggeredGridLayoutManager.HORIZONTAL));
rv.addItemDecoration(new
RecyclerView.ItemDecoration()
{
@Override
public
void
getItemOffsets(Rect
outRect,
View
view,
RecyclerView
parent,
RecyclerView.State
state)
{
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老顧聘用合同范本
- 先付款后供貨合同范本
- 保險(xiǎn)投資合同范本
- 加工生產(chǎn)勞務(wù)合同范本
- 京東物流折扣合同范本
- 上門電纜轉(zhuǎn)讓合同范例
- epc裝飾工程合同范本
- 代人取藥兼職合同范本
- 不賒銷合同范本模板
- 化肥銷售協(xié)議合同范本
- 數(shù)字電子技術(shù)(武漢科技大學(xué))知到智慧樹章節(jié)測(cè)試課后答案2024年秋武漢科技大學(xué)
- 綜合應(yīng)用能力事業(yè)單位考試(綜合管理類A類)試題及解答參考
- 阿爾茲海默病的家庭護(hù)理
- bim技術(shù)課件教學(xué)課件
- 腹水形成的原因及治療
- 單晶爐車間安全培訓(xùn)
- 高中地理必修第一冊(cè)期末試卷及答案-中圖版-2024-2025學(xué)年
- 護(hù)理核心制度測(cè)試題+參考答案
- 機(jī)械制造技術(shù)基礎(chǔ)(課程課件完整版)
- 《2023版CSCO卵巢癌診療指南》解讀課件
- 【醫(yī)院藥品管理系統(tǒng)探析與設(shè)計(jì)(論文)10000字】
評(píng)論
0/150
提交評(píng)論