Android浏览网页

我们会以两种不同的方式整合网页内容,一种是简单方式:隐式 intent,另一种较难的方式:使用 WebView浏览网页。

第一种是通过隐式intent浏览网页

通过隐式intent实现网页浏览(PhotoGalleryFragment.java)
public class PhotoGalleryFragment extends VisibleFragment {
private class PhotoHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private ImageView mItemImageView; private Galleryltem mGalleryltem;
public PhotoHolder(View itemView) { super(itemView);
mItemImageView = (ImageView) itemView.findViewById(R.id.item_image_view); itemView.setOnClickListener(this);
}
public void bindDrawable(Drawable drawable) { mItemImageView.setImageDrawable(drawable);
}
public void bindGalleryItem(GalleryItem galleryItem) { mGalleryItem = galleryItem;
}
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW, mGalleryItem.getPhotoPageUri()); startActivity(i);
}
}
}

然后,在PhotoAdapter.onBindViewHolder(...)方法中绑定PhotoHolderGalleryItem,

绑定GalleryItem (PhotoGalleryFragment.java)
private class PhotoAdapter extends RecyclerView.Adapter<PhotoHolder> {
@Override
public void onBindViewHolder(PhotoHolder photoHolder, int position) { GalleryItem galleryItem = mGalleryItems.get(position); photoHolder.bindGalleryItem(galleryItem);
Drawable placeholder = getResources().getDrawable(R.drawable.bill_up_close); photoHolder.bindDrawable(placeholder);
mThumbnailDownloader.queueThumbnail(photoHolder, galleryItem.getUrl());
}
}

使用隐式intent的好处是简单高效,但是需要打开独立的浏览器。如果不想打开独立的浏览器,我们可以尝试另一种方法:使用 WebView浏览网页。

创建一个activity以及一个显示WebView的fragment。依惯例先定义一个名为
fragment_photo_page.xml的布局文件。使用一个ConstraintLayout作为一级组件。在布局编辑窗口,

安排一个WebView作为ConstraintLayout的子组件。

添加完WebView,相对其父组件,为每一边添加一个约束。

接下来创建fragment。

fragment (PhotoPageFragmentjava)
public class PhotoPageFragment extends VisibleFragment { private static final String ARG_URI = "photo_page_url";
private Uri mUri; private WebView mWebView;
public static PhotoPageFragment newInstance(Uri uri) { Bundle args = new Bundle(); args.putParcelable(ARG_URI, uri);
PhotoPageFragment fragment = new PhotoPageFragment();
fragment.setArguments(args);
return fragment;
}
@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedlnstanceState);
mUri = getArguments().getParcelable(ARG_URI);
} 一
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_photo_page, container, false); mWebView = (WebView) v.findViewById(R.id.web_view);
return v;
}
}

接下来,新建PhotoPageActivity 托管类


创建显示网页的activity (PhotoPageActivity.java)
public class PhotoPageActivity extends SingleFragmentActivity {
public static Intent newIntent(Context context, Uri photoPageUri) { Intent i = new Intent(context, PhotoPageActivity.class); i.setData(photoPageUri); return i;
}
@Override
protected Fragment createFragment() {
return PhotoPageFragment.newInstance(getIntent().getData());
}
}

最后,在配置文件中声明新建的activity,

在配置文件中声明activity (AndroidManifest.xml)
〈manifest ... >
〈application
...>
<activity
android:name=".PhotoGalleryActivity" android:label="@string/app_name" >
</activity>
〈activity
android:name=".PhotoPageActivity" /> <service android:name=".PollService" />
</application>
</manifest>

运行PhotoGallery应用,点击任意图片,可看到一个新的空activity弹出

最后,需要实现一个WebViewClient


加载URL (PhotoPageFragmentjava)
public class PhotoPageFragment extends VisibleFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_photo_page, container, false);
mWebView = (WebView) v.findViewById(R.id.web_view); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient() { mWebView.loadUrl(mUri.toString());
return v;

}
}

运行应用,点击任意图片,可以看到显示对应图片的WebView。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值