viewpage或者viewflipper实现webview内容的切换

AfterSeptember 2014-06-03 11:50:20
现在在做一个项目,跟网易新闻客户端差不多,里面一个webview,实现左右滑动切换到上一篇或者下一篇,求大神指点指点。
...全文
517 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
男儿当自强- 2015-05-28
  • 打赏
  • 举报
回复
引用 8 楼 lulong1985 的回复:
等等,我给你摘出来,在项目中
你那个是怎么使用的啊,在你自定义的Linearlayout 里面放俩webview么,看不懂啊
silent_ 2014-09-05
  • 打赏
  • 举报
回复
大哥,能不能给个demo 小弟最近也在做这个
未注销 2014-06-05
  • 打赏
  • 举报
回复
引用 13 楼 lulong1985 的回复:
viewpage的好用吗,和webview的滑动有没有冲突
没有冲突,之前用viewflipper是有冲突的,要重写webview。
triplesky001 2014-06-05
  • 打赏
  • 举报
回复
viewpage的好用吗,和webview的滑动有没有冲突
未注销 2014-06-05
  • 打赏
  • 举报
回复
引用 11 楼 lulong1985 的回复:
http://download.csdn.net/detail/lulong1985/7443687 你下载集成一下,有什么问题再说
嘿嘿,感谢。我那天那你很久没动静,又自己回去折腾了,还是用viewpager实现的,不过不预先加载。
triplesky001 2014-06-04
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/lulong1985/7443687 你下载集成一下,有什么问题再说
未注销 2014-06-03
  • 打赏
  • 举报
回复
引用 3 楼 han1202012 的回复:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264109 ViewPager嵌套 WebView 的 这个应该很简单
碰到这么一个问题,我现在是一个listview中有10条新闻,我点击某一条进入webview那个界面,但是用了viewpager后每次都是加载第一条,而不是加载当前条,这怎么弄。代码如下。
public class ContentActivity extends Activity implements OnPageChangeListener {

	private WebView contentView;
	private ProgressBar progressBar;
	private ViewPager mPager;
	private List<View> listViews = new ArrayList<View>();
	private MyApplication app;

	private int position;


	@SuppressLint("SetJavaScriptEnabled")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.content_activity);

		app = (MyApplication) getApplication();
		getActionBar().setTitle("");
		getActionBar().setDisplayHomeAsUpEnabled(true);
		Drawable b = this.getResources().getDrawable(
				R.drawable.abc_list_longpressed_holo);
		getActionBar().setBackgroundDrawable(b);
		

		mPager = (ViewPager) findViewById(R.id.vPager);
		
		mPager.setAdapter(new WebViewPagerAdapter(listViews));
		
		position = getIntent().getIntExtra("position", 1);
		
		initView();
		addWebView();
	}
	
	
	public void addWebView() {
		
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				for (int i = 0; i < app.getNewsDatas().size(); i++) {
					WebView wView = new WebView(this);
					
					wView.getSettings().setCacheMode(
							WebSettings.LOAD_CACHE_ELSE_NETWORK);
					wView.getSettings().setJavaScriptEnabled(true);
					wView.setWebViewClient(new WebViewClient() {
						@Override
						public boolean shouldOverrideUrlLoading(WebView view, String url) {
							// TODO Auto-generated method stub
							view.loadUrl(url);
							return true;
						}

						@Override
						public void onPageFinished(WebView view, String url) {
							// TODO Auto-generated method stub
							super.onPageFinished(view, url);
						}
					});
					wView.setHorizontalScrollBarEnabled(false);
					
					wView.loadUrl(app.getNewsDatas().get(i).getNewsUrl());
					
					listViews.add(wView);
				}
			}
		}).start();
	}
	
	public void initView() {
		contentView = (WebView) findViewById(R.id.content_webview);
		contentView.getSettings().setCacheMode(
				WebSettings.LOAD_CACHE_ELSE_NETWORK);
		contentView.getSettings().setJavaScriptEnabled(true);
		contentView.setWebViewClient(new WebViewClient() {
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// TODO Auto-generated method stub
				view.loadUrl(url);
				return true;
			}

			@Override
			public void onPageFinished(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onPageFinished(view, url);
			}
		});
		contentView.setHorizontalScrollBarEnabled(false);
		contentView.loadUrl(getIntent().getStringExtra("url"));
	}

	public void getContent(int parmPosition) {
		contentView.loadUrl(app.getNewsDatas().get(position).getNewsUrl());
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.content, menu);
		MenuItem menuItem = menu.findItem(R.id.news_fav);
		DBManager manager = new DBManager(this);
		if (manager.queryFav(getIntent().getIntExtra("id", 0))) {
			menuItem.setIcon(android.R.drawable.star_on);
		}

		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.news_fav) {
			DBManager manager = new DBManager(this);
			if (!manager.queryFav(getIntent().getIntExtra("id", 0))) {
				NewsData data = new NewsData();
				data.setNewsId(getIntent().getIntExtra("id", 0));
				data.setNewsTitle(getIntent().getStringExtra("title"));
				data.setNewsUrl(getIntent().getStringExtra("url"));
				data.setNewsImg(getIntent().getStringExtra("img"));
				data.setNewsTime(getIntent().getStringExtra("time"));
				manager.insertToFav(data);
				item.setIcon(android.R.drawable.star_on);
			} else {
				manager.deleteFromFav(getIntent().getIntExtra("id", 0));
				item.setIcon(android.R.drawable.star_off);
			}
		} else if (id == R.id.news_share) {
			Intent shareIntent = new Intent();
			shareIntent.setAction(Intent.ACTION_SEND);
			shareIntent.putExtra(Intent.EXTRA_TEXT,
					getString(R.string.share_app));
			shareIntent.setType("text/plain");
			startActivity(Intent.createChooser(shareIntent,
					getString(R.string.share_title)));
		} else if (id == android.R.id.home) {
			finish();
			overridePendingTransition(R.anim.from_left_in,
					R.anim.from_right_out);
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		// super.onBackPressed();
		finish();
		overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out);
	}

	public void showPre() {
		position -= 1;
		// return app.getNewsDatas().get(position).getNewsUrl();
	}

	public void showNext() {
		position += 1;
		// return app.getNewsDatas().get(position).getNewsUrl();
	}
	
	
	public class WebViewPagerAdapter extends PagerAdapter {
		public List<View> mListViews;

		public WebViewPagerAdapter(List<View> mListViews) {
			this.mListViews = mListViews;
		}

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

		@Override
		public void finishUpdate(View arg0) {
		}

		@Override
		public int getCount() {
			return mListViews.size();
		}

		@Override
		public Object instantiateItem(View arg0, int arg1) {
			((ViewPager) arg0).addView(mListViews.get(arg1), position);
			return mListViews.get(arg1);
		}

		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			return arg0 == (arg1);
		}

		@Override
		public void restoreState(Parcelable arg0, ClassLoader arg1) {
		}

		@Override
		public Parcelable saveState() {
			return null;
		}

		@Override
		public void startUpdate(View arg0) {
		}
	}

	@Override
	public void onPageScrollStateChanged(int arg0) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void onPageSelected(int arg0) {
		// TODO Auto-generated method stub
		getContent(arg0);
	}

}
未注销 2014-06-03
  • 打赏
  • 举报
回复
引用 3 楼 han1202012 的回复:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264109 ViewPager嵌套 WebView 的 这个应该很简单
我看看先,thx
韩曙亮 2014-06-03
  • 打赏
  • 举报
回复
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264109 ViewPager嵌套 WebView 的 这个应该很简单
未注销 2014-06-03
  • 打赏
  • 举报
回复
引用 1 楼 han1202012 的回复:
把WebView 放到 ViewPager 里面 就可以实现这种效果
求大神给点demo吧
韩曙亮 2014-06-03
  • 打赏
  • 举报
回复
把WebView 放到 ViewPager 里面 就可以实现这种效果
未注销 2014-06-03
  • 打赏
  • 举报
回复
自己顶。。。
未注销 2014-06-03
  • 打赏
  • 举报
回复
引用 8 楼 lulong1985 的回复:
等等,我给你摘出来,在项目中
好的,非常感谢。
triplesky001 2014-06-03
  • 打赏
  • 举报
回复
等等,我给你摘出来,在项目中
未注销 2014-06-03
  • 打赏
  • 举报
回复
引用 6 楼 lulong1985 的回复:
哈哈,你算是遇对人了,我就做过这个,也是用webview,切换的时候加载,和你的完全一样,viewpage不好实现,我是继承linearlayout做的
大神求demo。
triplesky001 2014-06-03
  • 打赏
  • 举报
回复
哈哈,你算是遇对人了,我就做过这个,也是用webview,切换的时候加载,和你的完全一样,viewpage不好实现,我是继承linearlayout做的

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧