日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android笔记之ViewPager实现滑动页面

發布時間:2025/4/16 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android笔记之ViewPager实现滑动页面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、概述;

  • Viewpager的最大特點就是實現滑動的界面
  • 多個頁面的內容可以有兩種填充方式:View (普通Activity下),Fragment(V4的Fragmentctivity或者Fragment下)
  • ViewPager的布局最好是在LinearLayout下寫

2、main.xml添加Viewpager組件:

<android.support.v4.view.ViewPagerandroid:id="@+id/Pager"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center" ></android.support.v4.view.ViewPager>

3、主要代碼的步驟:

實例化Viewpager+獲得ArrayList作為填充內容+setAdapter(ArrayList....)+新建類extends (FragmentState)PagerAdapter

+重寫適配器的Constructor、getItem、getCount+根據情況決定是否監聽onPageChangeListener

(1)Views作為填充內容:

private void initViewPager() {// TODO Auto-generated method stubpager = (ViewPager) findViewById(R.id.Pager);LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);ImageView imaV;for (int i = 0; i < ids.length; i++) {imaV = new ImageView(this);imaV.setImageResource(ids[i]);imaV.setLayoutParams(params);imaV.setScaleType(ScaleType.FIT_XY);views.add(imaV);}pager.setAdapter(new MyAdapter(views));} public class MyAdapter extends PagerAdapter {private List<View> views;public MyAdapter(List<View> views) {this.views = views;}//destroyItem,getCount,instantiateItem實現循環滑動 @Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView(views.get(arg1 % views.size()));}@Overridepublic int getCount() {return views.size();//向右循環滑動//return views.size()*5; }@Overridepublic Object instantiateItem(View arg0, int arg1) {Log.e("tag", "instantiateItem = " + arg1);((ViewPager) arg0).addView(views.get(arg1 % views.size()), 0);return views.get(arg1 % views.size());}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == (arg1);} }

?

(2)fragment作為填充內容:

  • FragmentActivity或Fragment下
  • fragment_1 extend Fragment
private ViewPager pager; pager = (ViewPager) findViewById(R.id.Pager);fragmentList.add(new fragment_1());// fragment_1導入v4的包fragmentList.add(new fragment_1());fragmentList.add(new fragment_1());Log.i("size", fragmentList.size() + "");MyAdapter myadapter = new MyAdapter(getSupportFragmentManager(),fragmentList);pager.setAdapter(myadapter); } public class MyAdapter extends FragmentStatePagerAdapter {List<Fragment> fragmentList;// 構造函數public MyAdapter(FragmentManager fm, List<Fragment> fragmentList) {super(fm);// TODO Auto-generated constructor stubthis.fragmentList = fragmentList;}// 重要 @Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubLog.i("getItem", arg0 + "");return (fragmentList == null || fragmentList.size() == 0) ? null: fragmentList.get(arg0);}// 重要 @Overridepublic int getCount() {// TODO Auto-generated method stubreturn fragmentList == null ? 0 : fragmentList.size();}} }

4、決定是否為ViewPager設置監聽:每次切換頁面的動作

pager.setOnPageChangeListener(new OnPageChangeListener() {/*** onPageSelected:每次切換頁面就會執行 在此實現圓點指示器以及在最后頁面顯示button*/@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stub}/*** 當頁面在滑動的時候會調用此方法,在滑動被停止之前,此方法回得到調用。 其中三個參數的含義分別為:* * arg0 :當前頁面,及你點擊滑動的頁面* * arg1:當前頁面偏移的百分比* * arg2:當前頁面偏移的像素位置*/@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stubif (arg0 == views.size() - 1) {Log.i("jump", "NextActivity");startActivity(new Intent().setClass(MainActivity.this,NextActivity.class));finish();Log.i("finished", "MainActivity");}}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub }});

?5、為ViewPager添加標題

一般情況下ViewPager在多個頁面下都是需要標題來作為指示的

標題有兩種形式:

(1)使用view.PagerTabStrip 來匹配各個頁面:

main.xml部分:

?

<android.support.v4.view.ViewPagerandroid:id="@+id/viewPager"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center" ><android.support.v4.view.PagerTabStrip android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" /></android.support.v4.view.ViewPager>

?

代碼部分:適配器需要添加private List<String> titleList作為標題字符串集合

class myPagerAdapter extends FragmentPagerAdapter {private List<Fragment> fragmentList;private List<String> titleList;public myPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList){super(fm);this.fragmentList = fragmentList;//this.fragmentList為這個類下的變量,右邊的fragmentList是構造函數的參數this.titleList = titleList;}
.........
public CharSequence getPageTitle(int position) {return (titleList.size() > position) ? titleList.get(position) : "";} ?

?

(2)監聽onPageChanggeListener改變Textiew或RadioGroup的狀態:

  • Textiew,Radioroup的觸碰效果通過selector實現
  • 按textView、RadioGroup改變頁面,通過對其setOnClickListener實現
  • 頁面滑動改變對應按鈕的改變通過Viewpager的監聽
  • 附加:圖片指示器的實現只需在Viewpager監聽實現

?

?

?

Done!

?

轉載于:https://www.cnblogs.com/xingyyy/p/3337595.html

總結

以上是生活随笔為你收集整理的Android笔记之ViewPager实现滑动页面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。