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