前言:
由於第一種切換頁面的效果不能滿足項目的要求,於是又找到另外一種更簡單好用的方法來實現,頓時感覺,做項目開發,找到一種合適的方法能夠減少很多時間,(剛開始自己弄的時候還想着自己寫手勢識別的方法呢)……
布局很簡單,用到的是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 }
基本的實現demo就是這樣,html的代碼就不放在這里了……

