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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...

發(fā)布時間:2023/12/1 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在android應(yīng)用中,多屏滑動是一種很常見的風(fēng)格,沒有采用viewpager的代碼實(shí)現(xiàn)會很長,如果采用ViewPager,代碼就會短很多,但是使用ViewPager也有弊端:需要導(dǎo)入android-support-v4.jar、細(xì)節(jié)無法控制。不過現(xiàn)在情況已經(jīng)不一樣了,android-support-v4中提供了很多實(shí)用的功能,以至于現(xiàn)在新建一個android工程默認(rèn)都會導(dǎo)入這個jar包。那我們就也采用viewpager來做滑動吧。另外一個概念就是Fragment和FragmentActivity,Fragment是一個特殊的類,有著和activity一致的生命周期和view一致的界面,也就是Fragment就等于具有生命周期的View,但是,要注意的是:Fragment并不是View,它和View沒有繼承關(guān)系。使用Fragment的好處是:Fragment可以重用,而且每個Fragment可以在內(nèi)部處理自己的業(yè)務(wù)就像activity一樣,這樣模塊間耦合較低,比把所有的業(yè)務(wù)都寫在一個activity內(nèi)部邏輯要清晰很多。還有就是,由于每個模塊的業(yè)務(wù)都在Fragment內(nèi)部來實(shí)現(xiàn),這樣activity只要管理好幾個Fragment就行了,不需要做和業(yè)務(wù)相關(guān)的事情,最后,Fragment可以用來做不同分辨率機(jī)型的適配。Fragment在sdk(android 3.0及更高)和android-support-v4里面都有,但是由于兼容性的問題,我們只能使用android-support-v4里面的Fragment,除非你想你的apk只跑在3.0以后的android手機(jī)上,FragmentActivity的情況和Fragment類似。關(guān)于Fragment和FragmentActivity,其實(shí)有一些基本的用法需要了解一下,但是考慮到Fragment不是本文的重點(diǎn),所以這里就不介紹了,另外,本文只用Fragment做了一個簡單的界面,大家應(yīng)該一看就懂,好了,言歸正傳。

ViewPager + Fragment 經(jīng)常用到 代碼是從 actionbarsherlock 中提取出來的,這個效果都知道是 滑動來切換的。直接上代碼了

在這里簡單說明一下 FragmentStatePagerAdapter 和 FragmentPagerAdapter

2個adapter:

第一種 fragment狀態(tài)adapter - 在當(dāng)前只會存在 前1個fragment 當(dāng)前 fragment 和 下1個 fragment 其他銷毀 ,適合加載多數(shù)據(jù);

第二種 FragmentPagerAdapter - 全部存在,所以不太適合加載 大量的數(shù)據(jù) 如圖片什么的,很容易內(nèi)存溢出。

工程結(jié)構(gòu):

1.activity adapter 在一起 (static類型的 Fragment)public class ViewPageFragment extends FragmentActivity {

//這個是有多少個 fragment頁面

static final int NUM_ITEMS = 5;

private MyAdapter mAdapter;

private ViewPager mPager;

private int nowPage;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.pagers_fragment_main);

mAdapter = new MyAdapter(getSupportFragmentManager() );

mPager = (ViewPager)findViewById(R.id.mypagers_pager);

mPager.setAdapter(mAdapter);

}

/**

* 有狀態(tài)的 ,只會有前3個存在 其他銷毀, 前1個, 中間, 下一個

*/

public static class MyAdapter extends FragmentStatePagerAdapter {

public MyAdapter(FragmentManager fm) {

super(fm);

}

@Override

public int getCount() {

return NUM_ITEMS;

}

//得到每個item

@Override

public Fragment getItem(int position) {

return ArrayFragment.newInstance(position);

}

// 初始化每個頁卡選項(xiàng)

@Override

public Object instantiateItem(ViewGroup arg0, int arg1) {

// TODO Auto-generated method stub

return super.instantiateItem(arg0, arg1);

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

System.out.println( "position Destory" + position);

super.destroyItem(container, position, object);

}

}

/**

* 無狀態(tài)的 會全部加載著, 這個適合少量的 特別多的圖片啊啥的 還是用 FragmentStatePagerAdapter

* @author lilei

*/

// public static class MyAdapter extends FragmentPagerAdapter {

// public MyAdapter(FragmentManager fm ) {

// super(fm);

//

// }

//

// @Override

// public int getCount() {

// return NUM_ITEMS;

// }

//

// @Override

// public Fragment getItem(int position) {

// // 返回相應(yīng)的 fragment

// return ArrayFragment.newInstance(position);

// }

//

// @Override

// public void destroyItem(ViewGroup container, int position, Object object) {

// System.out.println( "position Destory" + position);

// super.destroyItem(container, position, object);

// }

// }

/**

* 所有的 每個Fragment

*/

public static class ArrayFragment extends Fragment {

int mNum;

static ArrayFragment newInstance(int num) {

ArrayFragment array= new ArrayFragment();

Bundle args = new Bundle();

args.putInt("num", num);

array.setArguments(args);

return array;

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mNum = getArguments() != null ? getArguments().getInt("num") : 1;

System.out.println("mNum Fragment create ="+ mNum);

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

System.out.println("onCreateView = ");

//在這里加載每個 fragment的顯示的 View

View v = null;

if(mNum == 0){

v = inflater.inflate(R.layout.pagers_fragment1, container, false);

((TextView)v.findViewById(R.id.textView1)).setText(mNum+ "= mNum");

}else if(mNum == 1){

v = inflater.inflate(R.layout.pagers_fragment1, container, false);

((TextView)v.findViewById(R.id.textView1)).setText(mNum+ "= mNum");

}else if(mNum == 2){

v = inflater.inflate(R.layout.pagers_fragment1, container, false);

((TextView)v.findViewById(R.id.textView1)).setText(mNum+ "= mNum");

}else{

v = inflater.inflate(R.layout.pagers_fragment1, container, false);

((TextView)v.findViewById(R.id.textView1)).setText(mNum+ "= mNum");

}

return v;

}

@Override

public void onActivityCreated(Bundle savedInstanceState) {

System.out.println("onActivityCreated = ");

super.onActivityCreated(savedInstanceState);

}

@Override

public void onDestroyView(){

System.out.println(mNum + "mNumDestory");

super.onDestroyView();

}

@Override

public void onDestroy(){

super.onDestroy();

}

}

}

2. 和 1也沒什么太大區(qū)別( 個中用處 看個人了 )public class ViewPageFragmentCS extends FragmentActivity {

//這個是有多少個 fragment頁面

private MyAdapter mAdapter;

private ViewPager mPager;

private List list = new ArrayList();;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.pagers_fragment_main);

for (int i = 0; i < 7 ; i++) {

Entity ee = new Entity();

ee.name = "ll"+ i;

ee.age = ""+ i;

list.add(ee);

}

mAdapter = new MyAdapter(getSupportFragmentManager(),list);

mPager = (ViewPager)findViewById(R.id.mypagers_pager);

mPager.setAdapter(mAdapter);

}

private class Entity{

public String name;

public String age;

}

// 在這里你可以傳 list 也可以傳遞 list數(shù)據(jù)

public class MyAdapter extends FragmentStatePagerAdapter {

List list_ee;

public MyAdapter(FragmentManager fm, List ee) {

super(fm);

this.list_ee = ee ;

}

@Override

public int getCount() {

return list_ee.size();

}

// 初始化每個頁卡選項(xiàng)

@Override

public Object instantiateItem(ViewGroup arg0, int position) {

ArrayFragment ff = (ArrayFragment)super.instantiateItem(arg0, position);

ff.setThings(list_ee.get(position),position);

return ff;

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

System.out.println( "position Destory" + position);

super.destroyItem(container, position, object);

}

@Override

public Fragment getItem(int arg0) {

// TODO Auto-generated method stub

return new ArrayFragment();

}

}

/**

* 所有的 每個Fragment

*/

public class ArrayFragment extends Fragment {

private Entity ee;

private int position;

public void setThings(Entity ee,int position){

this.ee =ee ;

this.position = position;

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

System.out.println("onCreateView = ");

//在這里加載每個 fragment的顯示的 View

View v = inflater.inflate(R.layout.pagers_fragment1, container, false);

((TextView)v.findViewById(R.id.textView1)).setText(ee.name+ "= ee.Name -=age"+ ee.age);

return v;

}

@Override

public void onActivityCreated(Bundle savedInstanceState) {

System.out.println("onActivityCreated = ");

super.onActivityCreated(savedInstanceState);

}

@Override

public void onDestroyView(){

System.out.println("onDestroyView = "+ position);

super.onDestroyView();

}

@Override

public void onDestroy(){

System.out.println("onDestroy = "+ position);

super.onDestroy();

}

}

}

直接復(fù)制過去就可以看效果了 別忘記 V4包,xml 布局文件 自己隨便整個吧。

滑動到第3個頁面的時候可以看到第1個頁面銷毀第4個生成,當(dāng)前存在2、3、4:

更多Android App中使用ViewPager+Fragment實(shí)現(xiàn)滑動切換效果相關(guān)文章請關(guān)注PHP中文網(wǎng)!

聲明:本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!如有疑問,請聯(lián)系admin@php.cn處理

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。