您的位置:首页 > 移动开发

Android切换页面效果的实现二:WebView+ViewPager

2013-07-31 20:00 716 查看
前言:

  由于第一种切换页面的效果不能满足项目的要求,于是又找到另外一种更简单好用的方法来实现,顿时感觉,做项目开发,找到一种合适的方法能够减少很多时间,(刚开始自己弄的时候还想着自己写手势识别的方法呢)……

布局很简单,用到的是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/

[b]

package cn.edu.stu.webview_viewpager;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;

public class MainActivity extends Activity {

private ViewPager vpArticle;
private MyPagerAdapter myAdapter;
private List<View> mListViews;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);

myAdapter = new MyPagerAdapter();
vpArticle = (ViewPager) findViewById(R.id.viewpager);
vpArticle.setAdapter(myAdapter);

mListViews = new ArrayList<View>();
addView(mListViews, "file:///android_asset/experience/exp_article2.html");
addView(mListViews, "file:///android_asset/experience/exp_article6.html");
addView(mListViews, "file:///android_asset/experience/exp_article10.html");
}

private void addView(List<View> viewList,String url)
{
WebView webView=new WebView(this);
webView.loadUrl(url);
viewList.add(webView);
}

private class MyPagerAdapter extends PagerAdapter {

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
Log.d("k", "destroyItem");
((ViewPager) arg0).removeView(mListViews.get(arg1));
}

@Override
public void finishUpdate(View arg0) {
Log.d("k", "finishUpdate");
}

@Override
public int getCount() {
Log.d("k", "getCount");
return mListViews.size();
}

@Override
public Object instantiateItem(View arg0, int arg1) {
Log.d("k", "instantiateItem");
((ViewPager) arg0).addView(mListViews.get(arg1), 0);
return mListViews.get(arg1);
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
Log.d("k", "isViewFromObject");
return arg0 == (arg1);
}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
Log.d("k", "restoreState");
}

@Override
public Parcelable saveState() {
Log.d("k", "saveState");
return null;
}

@Override
public void startUpdate(View arg0) {
Log.d("k", "startUpdate");
}
}
}


View Code
基本的实现demo就是这样,html的代码就不放在这里了……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: