Android笔记之ViewPager实现滑动页面
生活随笔
收集整理的這篇文章主要介紹了
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
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实现滑动页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dos命令收集
- 下一篇: [置顶] 软件设计之道_读书纪要.doc