版權(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ù)】RecyclerView+PagerSnapHelper如何實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)Viewpager效果
這篇文章主要為大家展示了“RecyclerView+PagerSnapHelper如何實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)Viewpager效果”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓在下帶領(lǐng)大家一起研究并學(xué)習(xí)一下“RecyclerView+PagerSnapHelper如何實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)Viewpager效果”這篇文章吧。RecyclerView+PagerSnapHelper實(shí)現(xiàn)抖音首頁(yè)翻頁(yè)的Viewpager效果,供大家參考,具體內(nèi)容如下先來(lái)個(gè)效果實(shí)現(xiàn)方式PagerSnapHelperActivity.javapublic
class
PagerSnapHelperActivity
extends
Activity
{
/**
*
UI
*/
//
recycleView
private
RecyclerView
mRecyclerView
=
null;
//
adapter
private
PagerSnapHelperAdapter
mMyadapter
=
null;
/**
*
數(shù)據(jù)
*/
//data
private
ArrayList<String>
mDataList
=
new
ArrayList<String>();
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.recycle_pager_activity);
//
創(chuàng)建數(shù)據(jù)集
for
(int
i
=
1;
i
<
100;
i++)
{
mDataList.add("item"
+
i);
}
//
縱向List
initUI();
}
public
void
initUI()
{
//
RecyclerView
mRecyclerView
=
(RecyclerView)
findViewById(R.id.recyclerview_vertical);
mRecyclerView.setNestedScrollingEnabled(false);
//
PagerSnapHelper
PagerSnapHelper
snapHelper
=
new
PagerSnapHelper()
{
//
在
Adapter的
onBindViewHolder
之后執(zhí)行
@Override
public
int
findTargetSnapPosition(RecyclerView.LayoutManager
layoutManager,
int
velocityX,
int
velocityY)
{
//
TODO
找到對(duì)應(yīng)的Index
Log.e("xiaxl:
",
"findTargetSnapPosition");
int
targetPos
=
super.findTargetSnapPosition(layoutManager,
velocityX,
velocityY);
Log.e("xiaxl:
",
"targetPos:
"
+
targetPos);
Toast.makeText(PagerSnapHelperActivity.this,
"滑到到
"
+
targetPos
+
"位置",
Toast.LENGTH_SHORT).show();
return
targetPos;
}
//
在
Adapter的
onBindViewHolder
之后執(zhí)行
@Nullable
@Override
public
View
findSnapView(RecyclerView.LayoutManager
layoutManager)
{
//
TODO
找到對(duì)應(yīng)的View
Log.e("xiaxl:
",
"findSnapView");
View
view
=
super.findSnapView(layoutManager);
Log.e("xiaxl:
",
"tag:
"
+
view.getTag());
return
view;
}
};
snapHelper.attachToRecyclerView(mRecyclerView);
//
布局管理器
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager(this);
//
默認(rèn)是Vertical
(HORIZONTAL則為橫向列表)
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//
mRecyclerView.setLayoutManager(linearLayoutManager);
//
TODO
這么寫是為了獲取RecycleView的寬高
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new
ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public
void
onGlobalLayout()
{
if
(Build.VERSION.SDK_INT
<
Build.VERSION_CODES.JELLY_BEAN)
{
mRecyclerView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
else
{
mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
/**
*
這么寫是為了獲取RecycleView的寬高
*/
//
創(chuàng)建Adapter,并指定數(shù)據(jù)集
mMyadapter
=
new
PagerSnapHelperAdapter(mDataList,
mRecyclerView.getWidth(),
mRecyclerView.getHeight());
//
設(shè)置Adapter
mRecyclerView.setAdapter(mMyadapter);
}
});
}
}recycle_pager_activity.xml<RelativeLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
/>
</RelativeLayout>PagerSnapHelperAdapter.javapublic
class
PagerSnapHelperAdapter
extends
RecyclerView.Adapter<PagerSnapHelperAdapter.ViewHolder>
{
//
數(shù)據(jù)集
private
ArrayList<String>
mDataList;
private
int
mWidth;
private
int
mHeight;
//
public
PagerSnapHelperAdapter(ArrayList<String>
dataset,
int
width,
int
height)
{
super();
this.mDataList
=
dataset;
//
mWidth
=
width;
mHeight
=
height;
}
@Override
public
ViewHolder
onCreateViewHolder(ViewGroup
viewGroup,
int
viewType)
{
Log.e("xiaxl:
",
"onCreateViewHolder");
//
創(chuàng)建一個(gè)View,簡(jiǎn)單起見直接使用系統(tǒng)提供的布局,就是一個(gè)TextView
View
view
=
View.inflate(viewGroup.getContext(),
R.layout.recycle_pager_item,
null);
View
contentView
=
view.findViewById(R.id.add_btn);
RelativeLayout.LayoutParams
rl
=
(RelativeLayout.LayoutParams)
contentView.getLayoutParams();
rl.width
=
mWidth;
rl.height
=
mHeight;
contentView.setLayoutParams(rl);
//
創(chuàng)建一個(gè)ViewHolder
ViewHolder
holder
=
new
ViewHolder(view);
return
holder;
}
@Override
public
void
onBindViewHolder(ViewHolder
viewHolder,
int
position)
{
Log.e("xiaxl:
",
"onBindViewHolder");
//
綁定數(shù)據(jù)到ViewHolder上
viewHolder.itemView.setTag(position);
//
viewHolder.mTextView.setText(position
+
"
item");
}
@Override
public
int
getItemCount()
{
return
mDataList.size();
}
/**
*
*/
public
static
class
ViewHolder
extends
RecyclerView.ViewHolder
{
public
TextView
mTextView;
public
ViewHolder(View
itemView)
{
super(itemView);
mTextView
=
(TextView)
itemView.findViewById(R.id.add_btn);
}
}
}recycle_pager_item.xml<RelativeLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="640dp"
android:orienta
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國(guó)藥用塑料瓶市場(chǎng)競(jìng)爭(zhēng)格局與投資策略深度調(diào)查研究報(bào)告
- 2026年叉車基礎(chǔ)考試題庫(kù)含答案
- 2026年叉車安全法考試題庫(kù)及答案(有一套)
- 2026年叉車安全考試試題及完整答案一套
- 2026年叉車操作教學(xué)考試題庫(kù)及完整答案一套
- 2026年叉車機(jī)電考試題庫(kù)及完整答案一套
- 2026年叉車測(cè)試題庫(kù)帶答案
- 2026年叉車?yán)碚摐y(cè)試題庫(kù)帶答案
- 2026年叉車貨車安全培訓(xùn)試題庫(kù)及參考答案1套
- 2025-2030亞洲BC行業(yè)現(xiàn)代供需格局及未來(lái)前景規(guī)劃分析研究報(bào)告
- 2025新滬教版英語(yǔ)(五四學(xué)制)七年級(jí)下單詞默寫表
- 食品行業(yè)停水、停電、停汽時(shí)應(yīng)急預(yù)案
- 高一英語(yǔ)新教材全四冊(cè)單詞表漢譯英默寫(2019新人教版)
- MEMRS-ECG心電網(wǎng)絡(luò)系統(tǒng)使用說(shuō)明書
- 美國(guó)變壓器市場(chǎng)深度報(bào)告
- 建設(shè)工程第三方質(zhì)量安全巡查標(biāo)準(zhǔn)
- 乳化液處理操作規(guī)程
- 飯店轉(zhuǎn)讓協(xié)議合同
- 營(yíng)建的文明:中國(guó)傳統(tǒng)文化與傳統(tǒng)建筑(修訂版)
- 液化天然氣氣化站安全檢查表
- 2023年白銀有色集團(tuán)招聘筆試題庫(kù)及答案解析
評(píng)論
0/150
提交評(píng)論