C#中WebBroeser控件用法實例教程。本站提示廣大學習愛好者:(C#中WebBroeser控件用法實例教程)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中WebBroeser控件用法實例教程正文
在android運用中,多屏滑動是一種很罕見的作風,沒有采取viewpager的代碼完成會很長,假如采取ViewPager,代碼就會短許多,然則應用ViewPager也有弊病:須要導入android-support-v4.jar、細節沒法掌握。不外如今情形曾經紛歧樣了,android-support-v4中供給了許多適用的功效,以致於如今新建一個android工程默許都邑導入這個jar包。那我們就也采取viewpager來做滑動吧。別的一個概念就是Fragment和FragmentActivity,Fragment是一個特別的類,有著和activity分歧的性命周期和view分歧的界面,也就是Fragment就等於具有性命周期的View,然則,要留意的是:Fragment其實不是View,它和View沒有繼續關系。應用Fragment的利益是:Fragment可以重用,並且每一個Fragment可以在外部處置本身的營業就像activity一樣,如許模塊間耦合較低,比把一切的營業都寫在一個activity外部邏輯要清楚許多。還有就是,因為每一個模塊的營業都在Fragment外部來完成,如許activity只需治理好幾個Fragment就好了,不須要做和營業相干的工作,最初,Fragment可以用來做分歧分辯率機型的適配。Fragment在sdk(android 3.0及更高)和android-support-v4外面都有,然則因為兼容性的成績,我們只能應用android-support-v4外面的Fragment,除非你想你的apk只跑在3.0今後的android手機上,FragmentActivity的情形和Fragment相似。關於Fragment和FragmentActivity,其實有一些根本的用法須要懂得一下,然則斟酌到Fragment不是本文的重點,所以這裡就不引見了,別的,本文只用Fragment做了一個簡略的界面,年夜家應當一看就懂,好了,言歸正傳。
ViewPager + Fragment 常常用到 代碼是從 actionbarsherlock 中提掏出來的,這個後果都曉得是 滑動來切換的。直接上代碼了
在這裡簡略解釋一下 FragmentStatePagerAdapter 和 FragmentPagerAdapter
2個adapter:
第一種 fragment狀況adapter - 在以後只會存在 前1個fragment 以後 fragment 和 下1個 fragment 其他燒毀 ,合適加載多半據;
第二種 FragmentPagerAdapter - 全體存在,所以不太合適加載 年夜量的數據 如圖片甚麼的,很輕易內存溢出。
工程構造:

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);
}
/**
* 有狀況的 ,只會有前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);
}
// 初始化每一個頁卡選項
@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);
}
}
/**
* 無狀況的 會全體加載著, 這個合適大批的 特殊多的圖片啊啥的 照樣用 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) {
// // 前往響應的 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也沒甚麼太年夜差別( 個頂用處 看小我了 )
public class ViewPageFragmentCS extends FragmentActivity {
//這個是有若干個 fragment頁面
private MyAdapter mAdapter;
private ViewPager mPager;
private List<Entity> list = new ArrayList<ViewPageFragmentCS.Entity>();;
@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<Fragment> 也能夠傳遞 list<Object>數據
public class MyAdapter extends FragmentStatePagerAdapter {
List<Entity> list_ee;
public MyAdapter(FragmentManager fm, List<Entity> ee) {
super(fm);
this.list_ee = ee ;
}
@Override
public int getCount() {
return list_ee.size();
}
// 初始化每一個頁卡選項
@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();
}
}
}
直接復制曩昔便可以看後果了 別忘卻 V4包,xml 結構文件 本身隨意全部吧。
滑動到第3個頁面的時刻可以看到第1個頁面燒毀第4個生成,以後存在2、3、4:
