国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

RecylerView實現(xiàn)流布局StaggeredGridLayoutManager使用詳解

2019-10-21 21:39:16
字體:
供稿:網(wǎng)友

本文實例為大家分享了RecylerView實現(xiàn)流布局的具體代碼,供大家參考,具體內(nèi)容如下

RecylerView,流布局,StaggeredGridLayoutManager

第一步:添加依賴

compile 'com.android.support:appcompat-v7:25.3.1'compile 'com.android.support:design:25.3.1'compile 'com.android.support:recyclerview-v7:25.3.1'compile 'com.android.support:cardview-v7:25.3.1'compile 'com.github.bumptech.glide:glide:3.7.0'

因為加載的是網(wǎng)絡(luò)圖片,所以采用的是Glide圖片加載框架。

第二步:recylerview布局 (刷新需要添加SwipeRefreshLayout)

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.wangchang.testpalette.MainActivity"> <android.support.v7.widget.RecyclerView  android:id="@+id/recylerview"  android:padding="4dp"  android:layout_width="match_parent"  android:layout_height="match_parent" /></RelativeLayout>

第三步:RecylerView初始化

 recyclerView = (RecyclerView) findViewById(R.id.recylerview); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));  recyclerView.setAdapter(adapter = new DemoAdapter());  adapter.replaceAll(getData());

Demo中:

final StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,    StaggeredGridLayoutManager.VERTICAL);  mRecyclerView.setLayoutManager(layoutManager);  mMeizhiListAdapter = new MeizhiListAdapter(getContext(), mMeizhiList);  mRecyclerView.setAdapter(mMeizhiListAdapter);  mRecyclerView.addOnScrollListener(getOnBottomListener(layoutManager));//滾動預(yù)先加載數(shù)據(jù)  mMeizhiListAdapter.setOnMeizhiTouchListener(getOnMeizhiTouchListener());//點擊事件

這里主要是 recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); 設(shè)置StaggeredGridLayoutManager布局管理器,參數(shù)分別是列數(shù),方向。

第四步:適配器的實現(xiàn)

 

package com.hsy.utils.utilsdemo.adapter;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 com.hsy.utils.utilsdemo.R;import com.hsy.utils.utilsdemo.module.home.Daily;import com.hsy.utils.utilslibrary.utils.GlideUtils;import java.util.List;/** * Created by drakeet on 6/20/15. */public class MeizhiListAdapter  extends RecyclerView.Adapter<MeizhiListAdapter.ViewHolder> { public static final String TAG = "MeizhiListAdapter"; private List<Daily> mList; private Context mContext; private OnMeizhiTouchListener mOnMeizhiTouchListener; public MeizhiListAdapter(Context context, List<Daily> meizhiList) {  mList = meizhiList;  mContext = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int i) {  View v = LayoutInflater.from(parent.getContext())    .inflate(R.layout.item_meizhi, parent, false);  return new ViewHolder(v); } @Override public void onBindViewHolder(final ViewHolder viewHolder, final int position) {  Daily meizhi = mList.get(position);  int limit = 48;  String text = "";  if (meizhi != null && meizhi.getTitle() != null) {   text = meizhi.getTitle().length() > limit ? meizhi.getTitle().substring(0, limit) +     "..." : meizhi.getTitle();  }  viewHolder.meizhi = meizhi;  viewHolder.titleView.setText(text);  viewHolder.card.setTag(meizhi.getDesc());//加載圖片  GlideUtils.displayImage(mContext, meizhi.getImgUrl(), viewHolder.meizhiView); } @Override public void onViewRecycled(ViewHolder holder) {  super.onViewRecycled(holder); } @Override public int getItemCount() {  return mList != null ? mList.size() : 0; } public void setOnMeizhiTouchListener(OnMeizhiTouchListener onMeizhiTouchListener) {  this.mOnMeizhiTouchListener = onMeizhiTouchListener; } class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {  ImageView meizhiView;  TextView titleView;  View card;  Daily meizhi;  public ViewHolder(View itemView) {   super(itemView);   card = itemView;   meizhiView = (ImageView) itemView.findViewById(R.id.meizhi);   titleView = (TextView) itemView.findViewById(R.id.title);   meizhiView.setOnClickListener(this);   card.setOnClickListener(this);   itemView.setOnClickListener(this);  }  @Override  public void onClick(View v) {   mOnMeizhiTouchListener.onTouch(v, meizhiView, card, meizhi);  } }}

每個布局的樣式item_layout

 

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginTop="5dp"> <LinearLayout  android:id="@+id/meizhi_card"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:clickable="true"  android:orientation="vertical">  <!-- android:background="@drawable/bg_card"-->  <ImageView   android:id="@+id/meizhi"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:adjustViewBounds="true"   android:scaleType="fitXY" />  <LinearLayout   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:background="?attr/selectableItemBackground"   android:orientation="horizontal"   android:paddingBottom="10dp"   android:paddingLeft="10dp"   android:paddingRight="10dp"   android:paddingTop="10dp">   <TextView    android:id="@+id/title"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textAppearance="?android:attr/textAppearanceSmall"    tools:text="Title" />  </LinearLayout> </LinearLayout></android.support.v7.widget.CardView>

下面來說實現(xiàn)動態(tài)設(shè)置圖片大小方式

ivImage.getContext()).getWindowManager().getDefaultDisplay().getWidth();  ViewGroup.LayoutParams params = ivImage.getLayoutParams();  //設(shè)置圖片的相對于屏幕的寬高比  params.width = width/3;  params.height = (int) (200 + Math.random() * 400) ;  ivImage.setLayoutParams(params);

這里是獲取屏幕寬度,因為是三列,所以設(shè)置圖片寬度取屏幕三分之一。

demo源碼:參考UtilsDemo中的消息

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江城| 海城市| 新昌县| 高密市| 邵阳市| 普格县| 兴业县| 灵山县| 砀山县| 普定县| 肇源县| 绿春县| 武邑县| 太原市| 长乐市| 策勒县| 宿迁市| 武鸣县| 宁都县| 稷山县| 盐城市| 伊川县| 峨边| 新宾| 阿合奇县| 北京市| 靖远县| 苗栗市| 泾阳县| 潜山县| 荆门市| 屯门区| 子洲县| 景泰县| 张家港市| 喜德县| 衡山县| 浠水县| 文山县| 雷山县| 乐山市|