制作网页的Android客户端(二)

3.显示内容

  得到了需要的属性,接下来就是展示了

  MainActivity使用一个ListView显示NewsList集合的内容

  NewsContentActivity通过Intent从MainActivity传递link,使用一个WebView显示新闻的详细内容。

  需要注意的是webview加载URL使用的是loadDataWithBaseURL()这个方法,第一个属性是baseUrl,用来使相对地址的link属性变成绝对地址。

  这个Html文件头

  String head="<head><style>img{max-width:100%;width:auto;height:auto;}</style><style>iframe{max-width:100%;width:auto;height:auto;}</style></head>";

   可以让图片和视频播放器适应手机的大小

package com.saltwater.animenews;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.StringRes;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.WebView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

public class NewsContentActivity extends AppCompatActivity {
    String baseUrl="http://www.animenewsnetwork.com/";
    //String testurl="news/2016-10-30/angel-beats-heaven-door-manga-ends-new-manga-of-true-arc-starts-in-2017/.108274";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news_content);

        final Handler handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                WebView wvContent= (WebView) findViewById(R.id.wvContent);
                wvContent.getSettings().setJavaScriptEnabled(true);
                wvContent.loadDataWithBaseURL(baseUrl,msg.obj.toString(),"text/html","utf-8",null);
            }
        };
        /*获取新闻内容*/
        new  Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Intent intent=getIntent();
                    String link=intent.getStringExtra("link");
                    Document doc = Jsoup.connect(baseUrl+link).get();
                    String head="<head><style>img{max-width:100%;width:auto;height:auto;}</style><style>iframe{max-width:100%;width:auto;height:auto;}</style></head>";
                    String bodyHTML=doc.select("div[class=meat]>*").toString();
                    String HTML="<html>"+head+"<body>"+bodyHTML+"</body></html>";
                    Message message=new Message();
                    message.obj=HTML;
                    handler.sendMessage(message);
                }
                catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

listview的item布局

  news_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="title"
        android:textSize="22dp"
        android:textStyle="bold"
        android:textColor="@color/colorPrimaryDark"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:maxLines="3"
        android:ellipsize="end"/>

    <TextView
        android:id="@+id/tvPubData"
        android:layout_width="wrap_content"
        android:layout_height="22dp"
        android:layout_below="@id/tvTitle"
        android:layout_alignParentLeft="true"
        android:text="time"/>

    <TextView
        android:id="@+id/tvCategory"
        android:layout_width="wrap_content"
        android:layout_height="22dp"
        android:layout_below="@id/tvTitle"
        android:layout_alignParentRight="true"
        android:text="Category"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:layout_below="@id/tvPubData"
        android:weightSum="1">
        <TextView
            android:id="@+id/tvDescription"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:textSize="18dp"
            android:textColor="@color/colorBlack"
            android:maxLines="5"
            android:ellipsize="end"
            android:text="Description"/>
        <ImageView
            android:id="@+id/imgViewCover"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="0.5"
            android:src="@mipmap/ic_launcher"/>
    </LinearLayout>

</RelativeLayout>

5.封面显示(todo)

时间: 2024-10-17 23:00:48

制作网页的Android客户端(二)的相关文章

zxin android客户端二维码框问题

可以在这找到解决方式: http://stackoverflow.com/questions/26797321/not-able-to-convert-zxing-into-portrait-mode-in-android 重要的第二步 2 I在 CameraManager 类, 方法getFramingRect 替换 int width = MIN_FRAME_WIDTH; int height = MIN_FRAME_HEIGHT; if (context.getResources().ge

Android扫描二维码 实现 登录网页

1. 扫描二维码登录的实现机制 * Android客户端要给网页端发送信息,说登录的是我 * 网页登录界面要不断的查询是否已经被扫描登录 总体分三步: ① PC端保存randnumber(随机数) ② Android客户端携带username 保存在randnumber那条记录上 ③ PC端去服务器轮询,如果randnumber记录的username不为空,则实行登录即可 2. Android 客户端扫描二维码 介绍一个库 Zxing,这是一个庞大的库,有人已经整理出了扫描二维码部分的库

CSDN Android客户端的制作 导航帖

弄个导航贴,把相关知识来个汇总. CSDN Android的客户端的效果图: 分别通过以下博客进行详细的讲解: 1.Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架 主要使用ViewPageIndicator , FragmentPagerAdapter ,ViewPager对主框架的制作: 2.抓取csdn上的各类别的文章 (制作csdn app 二) 使用Java对CSDN中我项目中需要用的数据的抓取,一方面java调试比较方便,另一方

CSDN Android客户端开发(二):详解如何基于Java用Jsoup爬虫HTML数据

本文参考链接详细介绍如何使用Jsoup包抓取HTML数据,是一个纯java工程,并将其打包成jar包.希望了解如何用java语言爬虫网页的可以看下. 杂家前文就又介绍用HTTP访问百度主页得到html的string字符串,但html的文本数据如果不经过处理就是个文本字符串没有任何效果的.所谓的浏览器就是负责将文本的html"翻译"成看到的界面.在前文有介绍,这个csdn的客户端app分首页.业界.移动.研发.程序员.云计算五大类.以业界为例,http://news.csdn.net/ 

上门洗车APP --- Android客户端开发 之 网络框架封装(二)

上门洗车APP --- Android客户端开发 之 网络框架封装(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Android客户端开发 前言及业务简介 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 本篇接着给大家分享网络框架封装,相信感兴趣的朋友已经对上篇博文中的一些开源项目有了些许了解,这里继续为大家介绍关于GenericDataManager 通用网络管理类中的 dataRequest 方法 和

Android 客户端与服务器端进行数据交互(二、登录客户端)

概要 Android客户端分为User,HttpUtil,HttpCallbackListener,MainActivity四个部分.User model与服务端的一样,一方面是用于本地用户信息的存储model,另一方面也是为了保证构造URL时使用的key一致. HttpUtil封装了发送Http请求的过程和构造URL的函数,HttpCallbackListener是用于发送请求后的回调接口,MainActivity就是用于测试的Activity交互界面了. User model 不再贴出,见上

Android客户端与PHP服务端通信(二)

概述 本节通过一个简单的demo程序简单的介绍Android客户端通过JSON向PHP服务端提交订单,PHP服务端处理订单后,通过JSON返回结果给Android客户端.正常来讲,PHP服务端在处理订单过程中,需要与MySQL数据库交互,这里为了简单起见,暂时省掉MySQL. 通信格式 首先,需要定下客户端与服务端之间通信格式,如下表 Android客户端 客户端与服务端采用JSON数据格式通信,同时采用HTTP通信协议交互,采用POST方式提交结果.同时还要注意一点,与WEB服务器通信的过程需

极光推送使用实例(二) Android客户端

上一篇简单介绍了极光推送在Java服务端的实现,如果感兴趣的可以看一下极光推送使用实例(一)JAVA服务端.这篇文章介绍下极光推送在Android客户端的实现. JPush Android SDK 是作为 Android Serivice 长期运行在后台的,从而创建并保持长连接,保持永远在线的能力.JPush Android SDK 由于使用自定义协议,协议体做得极致地小,流量消耗非常地小.电量方面,JPush Android SDK 经过持续地优化,尽可能减少不必要的代码执行:并且,长期的版本

接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例

做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是让你的应用程序可以调用新浪微博,腾讯微博和人人网的api,实现微博发送,分享给好友等等的功能啦.当然也可以实现让你的客户端使用微博账号进行登录.我们这篇文章要讲的就是访问这些社交平台提供的api的时候比较关键的一步,获取调用api接口的token,token可以理解为我们的客户端程序与社交平台api