WanAndroid实战——内容显示

前情回顾:

1.WanAndroid实战——首页Banner

2.WanAndroid实战——首页文章

目前已经能够展示首页文章和banner图了,但是却无法显示文章的内容,就像给了一个美味的蛋糕,却不让你吃,现在,我们就来吃蛋糕(再不吃就过保质期了)。

显示文章内容.gif

内容展示Activity

既然要展示内容,而这些内容都是通过网页来显示的,这里选择使用开源框架AgentWeb

1.在build.gradle里添加依赖。

    implementation 'com.just.agentweb:agentweb:4.0.2'
    implementation 'com.just.agentweb:download:4.0.2'

2.创建用来展示内容的WebViewActivity.java,这里选择继承自AppCompatActivity而不是BaseActivity,创建完成后会自动生成对应的布局文件。

3.修改布局文件,这里直接给出布局文件代码。




    

        

    


    


这里的toolBar的title我加了一个跑马灯的效果,如果觉得low,或者不希望无限循环,可以自己修改里面的属性值。添加的原因是为了展示全内容,并且不希望换行显示。这个布局文件整体来说还是很简单的。

4.完善WebViewActivity.java

从效果来看,需要有一个返回按钮,一个加载进度条,一个内容展示的界面,因为使用AgentWeb,只需要关心返回按钮的添加即可。

package com.tom.wanandroid.view;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.just.agentweb.AgentWeb;
import com.tom.wanandroid.Constant;
import com.tom.wanandroid.R;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;

/**
 * 

Title: MainModel

*

Description: 内容展示界面

* * @author tom * @date 2019/3/29 10:54 **/ public class WebViewActivity extends AppCompatActivity { Unbinder mBinder; @BindView(R.id.web_content) LinearLayout mWebContent; protected AgentWeb mAgentWeb; @BindView(R.id.title) TextView mTitle; @BindView(R.id.toolBar) Toolbar mToolBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web_view); mBinder = ButterKnife.bind(this); Intent intent = getIntent(); String title = intent.getStringExtra(Constant.ARTICLE_TITLE); String url = intent.getStringExtra(Constant.ARTICLE_URL); setUpActionBar(title); mAgentWeb = AgentWeb.with(this) .setAgentWebParent(mWebContent, new LinearLayout.LayoutParams(-1, -1)) .useDefaultIndicator() .createAgentWeb() .ready() .go(url); } /** *

设置actionbar的title

* * @param title title */ private void setUpActionBar(String title) { setSupportActionBar(mToolBar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeAsUpIndicator(R.drawable.back_selector); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowTitleEnabled(false); mTitle.setText(title); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); } return super.onOptionsItemSelected(item); } @Override protected void onPause() { mAgentWeb.getWebLifeCycle().onPause(); super.onPause(); } @Override protected void onResume() { mAgentWeb.getWebLifeCycle().onResume(); super.onResume(); } @Override protected void onDestroy() { mAgentWeb.getWebLifeCycle().onDestroy(); super.onDestroy(); mBinder.unbind(); } }

AgentWeb的使用可以查看作者的github--AgentWeb

显示的容器已经准备完毕,接下来就是来给Banner和recycleView添加点击事件了。

添加点击事件

1.给Banner添加点击事件

mMainBanner.setOnBannerListener(),详细的可以看Android图片轮播控件

2.recycleView添加点击事件

给recycleView添加点击事件的方法有很多,我这里使用接口的方式。在ArticleAdapter.java中定义

    private OnItemClickListener mListener;

    public void setListener(OnItemClickListener listener) {
        mListener = listener;
    }
    
    public interface OnItemClickListener {
        /**
         * 

文章点击事件

* @param view view * @param position 点击位置 */ void onItemClick(View view, int position); /** *

收藏点击事件

* @param view 点击的view * @param position 点击的位置 */ void onCollectionClick(View view, int position); }

onBindViewHolder方法中,给itemView和mArticleCollection添加点击事件。

            //item点击事件
            articleHolder.itemView.setOnClickListener(v -> {
                if (mListener != null) {
                    mListener.onItemClick(articleHolder.itemView,articleHolder.getLayoutPosition());
                }

            });

            //收藏的点击事件
            articleHolder.mArticleCollection.setOnClickListener(v ->{
                if (mListener != null) {
                    mListener.onCollectionClick(articleHolder.mArticleCollection,articleHolder.getLayoutPosition());
                }
            });

具体的处理,就可以在MainActivity中进行实现了。

    @Override
    public void onItemClick(View view, int position) {

        if (mArticleDatas != null) {
            ArticleBean bean = mArticleDatas.get(position);
            Utils.startWebView(this, bean.title, bean.link);
        }
    }

    @Override
    public void onCollectionClick(View view, int position) {
        ToastUtils.setBgColor(getResources().getColor(R.color.colorPrimaryDark, null));
        ToastUtils.setMsgColor(getResources().getColor(R.color.white, null));
        ToastUtils.showShort(R.string.coming_soon);
    }

跳转的工具类

package com.tom.wanandroid.utils;

import android.content.Context;
import android.content.Intent;

import com.tom.wanandroid.Constant;
import com.tom.wanandroid.view.WebViewActivity;

/**
 * 

Title: Utils

*

Description: 工具集合

* * @author tom * @date 2019/3/26 14:40 **/ public class Utils { /** *

跳转到WebView

* @param context 上下文 * @param title title * @param url url */ public static void startWebView(Context context, String title, String url) { Intent intent = new Intent(); intent.setClass(context, WebViewActivity.class); intent.putExtra(Constant.ARTICLE_TITLE, title); intent.putExtra(Constant.ARTICLE_URL, url); context.startActivity(intent); } }

完成以上内容,就可以吃蛋糕了。

4.WanAndroid实战——刷新加载
5.WanAndroid实战——网络判断

你可能感兴趣的:(WanAndroid实战——内容显示)