Android切換頁面效果的實現二:WebView+ViewPager


前言:

  由於第一種切換頁面的效果不能滿足項目的要求,於是又找到另外一種更簡單好用的方法來實現,頓時感覺,做項目開發,找到一種合適的方法能夠減少很多時間,(剛開始自己弄的時候還想着自己寫手勢識別的方法呢)……

布局很簡單,用到的是ViewPager控件,它是google SDk中自帶的一個附加包的一個類,可以用來實現屏幕間的切換。這個附加包是android-support-v4.jar

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" >

    <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="none" />


</RelativeLayout>

 

實現效果:類似zaker的文章閱讀的效果,采用html對文章進行排版,圖文並排很容易實現,推薦一個文章排版的html代碼自動生成的工具:KompoZer,下載地址:http://sourceforge.net/projects/kompozer/

 

 

 

 主體Activity主要是將一個個頁面的webview放到一個List里面,然后viewpager控件有一個PagerAdapter的適配器,實現很簡單

 1 package cn.edu.stu.webview_viewpager;  2 
 3 import java.util.ArrayList;  4 import java.util.List;  5 
 6 import android.app.Activity;  7 import android.os.Bundle;  8 import android.os.Parcelable;  9 import android.support.v4.view.PagerAdapter; 10 import android.support.v4.view.ViewPager; 11 import android.util.Log; 12 import android.view.View; 13 import android.view.Window; 14 import android.webkit.WebView; 15 
16 public class MainActivity extends Activity { 17     
18     private ViewPager vpArticle; 19     private MyPagerAdapter myAdapter; 20     private List<View> mListViews; 21     
22  @Override 23     public void onCreate(Bundle savedInstanceState) { 24         super.onCreate(savedInstanceState); 25  requestWindowFeature(Window.FEATURE_NO_TITLE); 26  setContentView(R.layout.main); 27         
28         myAdapter = new MyPagerAdapter(); 29         vpArticle = (ViewPager) findViewById(R.id.viewpager); 30  vpArticle.setAdapter(myAdapter); 31         
32         mListViews = new ArrayList<View>(); 33         addView(mListViews, "file:///android_asset/experience/exp_article2.html"); 34         addView(mListViews, "file:///android_asset/experience/exp_article6.html"); 35         addView(mListViews, "file:///android_asset/experience/exp_article10.html"); 36  } 37     
38     private void addView(List<View> viewList,String url) 39  { 40         WebView webView=new WebView(this); 41  webView.loadUrl(url); 42  viewList.add(webView); 43  } 44     
45     private class MyPagerAdapter extends PagerAdapter { 46 
47  @Override 48         public void destroyItem(View arg0, int arg1, Object arg2) { 49             Log.d("k", "destroyItem"); 50  ((ViewPager) arg0).removeView(mListViews.get(arg1)); 51  } 52 
53  @Override 54         public void finishUpdate(View arg0) { 55             Log.d("k", "finishUpdate"); 56  } 57 
58  @Override 59         public int getCount() { 60             Log.d("k", "getCount"); 61             return mListViews.size(); 62  } 63 
64  @Override 65         public Object instantiateItem(View arg0, int arg1) { 66             Log.d("k", "instantiateItem"); 67             ((ViewPager) arg0).addView(mListViews.get(arg1), 0); 68             return mListViews.get(arg1); 69  } 70 
71  @Override 72         public boolean isViewFromObject(View arg0, Object arg1) { 73             Log.d("k", "isViewFromObject"); 74             return arg0 == (arg1); 75  } 76 
77  @Override 78         public void restoreState(Parcelable arg0, ClassLoader arg1) { 79             Log.d("k", "restoreState"); 80  } 81 
82  @Override 83         public Parcelable saveState() { 84             Log.d("k", "saveState"); 85             return null; 86  } 87 
88  @Override 89         public void startUpdate(View arg0) { 90             Log.d("k", "startUpdate"); 91  } 92  } 93 }
View Code

基本的實現demo就是這樣,html的代碼就不放在這里了……

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM