第二阶段个人冲刺记录06

今天:主要进行点击列表查看新闻详情

明天:对整体在进行一些调整

 

布局activity_news_details.xml,里面的代码如下:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">
    <!--标题-->
    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:navigationIcon="@mipmap/icon_back"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/white">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="新闻详情"
            android:textColor="@color/black"
            android:textSize="18sp" />
    </com.google.android.material.appbar.MaterialToolbar>

    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
复制代码

NewsDetailsActivity页面的代码了,如下所示

复制代码
/**
 * 新闻详情页面
 */
public class NewsDetailsActivity extends BaseActivity {
    private Toolbar toolbar;
    private WebView webView;

    @Override
    public void initData(Bundle savedInstanceState) {
        toolbar = findViewById(R.id.toolbar);
        webView = findViewById(R.id.web_view);
        back(toolbar, false);
        //设置状态栏
        setStatubar(this, R.color.white, true);
        //加载WebView
        loadWebView();
    }

    /**
     * 加载webView
     */
    @SuppressLint("SetJavaScriptEnabled")
    private void loadWebView() {
        //开始加载Url
        showLoadingDialog();

        String url = getIntent().getStringExtra("url");
        if (url == null || url.isEmpty()) {
            showMsg("无法显示新闻详情");
            return;
        }

        //声明WebSettings子类
        WebSettings webSettings = webView.getSettings();
        //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
        webSettings.setJavaScriptEnabled(true);
        //支持插件
        //设置自适应屏幕,两者合用
        webSettings.setUseWideViewPort(true);//将图片调整到适合webview的大小
        webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
        //缩放操作
        webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
        webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
        webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
        //其他细节操作
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
        webSettings.setAllowFileAccess(true); //设置可以访问文件
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
        webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
        webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
        //优先使用缓存
        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

        //加载一个网页

        webView.loadUrl(url);

        //重写shouldOverrideUrlLoading()方法,使得打开网页时不调用系统浏览器, 而是在本WebView中显示

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                //加载完成
                hideLoadingDialog();
            }
        });

    }

    @Override
    public int getLayoutId() {
        return R.layout.activity_news_details;
    }
}
复制代码

回到MainActivity,在initView方法中,修改点击列表item时触发的代码。

    mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
            //跳转到新闻详情页面
            Intent intent = new Intent(context, NewsDetailsActivity.class);
            intent.putExtra("url", mList.get(position).getUrl());
            startActivity(intent);
        });

 

posted @   Men!  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示