把WebView 放到 ViewPager 里面 就可以实现这种效果
解决方案 »
- Activity自动切换到后台, 什么原因呢?
- Android 连接webservice的问题
- C#和android两个程序中如何生成同一个随机数序列?
- 求助:请高手提供一个基于OpenCV-Android的Eclipse项目作为参考!
- android 怎么解析epub啊?
- 界面上传文件时显示圆形进度条怎么实现??
- 求救:cygwin 下objdump -d libhello-jni.so 出错: cannot execute binary file
- FrameLayout中为什么可以用 android:gravity="center" 这个属性?
- android 如何将得到的一系列hashmap对象插入到空的xml文件中
- 求助videoView,视频源的尺寸无法布满VIEW如何修改,求大神指教
- 有谁能帮忙,详细分析一下andoid中的AccessibilityEvent机制,我看了好多天,没看清楚,请教大神
- Android中在哪里清理Application中的全局资源?
碰到这么一个问题,我现在是一个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);
}}
你下载集成一下,有什么问题再说
嘿嘿,感谢。我那天那你很久没动静,又自己回去折腾了,还是用viewpager实现的,不过不预先加载。
没有冲突,之前用viewflipper是有冲突的,要重写webview。