Android webview实现图文混排

 啥不说,先上图

Android Studio 添加依赖:

compile 'org.jsoup:jsoup:1.11.3'

 

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {

    private WebView webview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }


    private void initView() {
        webview = findViewById(R.id.webview);

        String str = "\"

据多家美媒消息,五年前的今天,也就是2012年12月6日,湖" + "人名宿科比-布莱恩特迎来个人生涯一个非常大的里程碑!他成为NBA历史上" + "第5位总得分达到30000分的球员,也成了历史最年轻的30000分先生。

" + "

在湖人以103-87战胜黄蜂的比赛" + "中,科比出战33分钟,17投10中,得到29分6篮板4助攻。其中,第二节比赛他用" + "一记抛投让自己的职业生涯总得分达到30000分。

科比在这一天是34岁104" + "天,超越了张伯伦(35岁179天)成为NBA历史上最年轻的30000分先生。

" + "

詹姆斯目前32岁,如无意外的话,他在本赛" + "季(生涯第15个赛季)就能超越科比,成为NBA历史最年轻的30000分先生。

" + "

返回搜" + "狐,查看更多

责任编辑:

\""; Document parse = Jsoup.parse(str); Elements imgs = parse.getElementsByTag("img"); if (!imgs.isEmpty()) { for (Element e : imgs) { imgs.attr("width", "100%"); imgs.attr("height", "auto"); } } String content = parse.toString(); webview.loadDataWithBaseURL(null, content, "text/html", "utf-8", null); } private void initData() { webview.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { WebView.HitTestResult hitTestResult = ((WebView) v) .getHitTestResult(); if (hitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE || hitTestResult.getType() == WebView.HitTestResult.IMAGE_ANCHOR_TYPE || hitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { Toast.makeText(MainActivity.this, "图片地址:" + hitTestResult.getExtra(), Toast.LENGTH_SHORT).show(); Log.e("图片保存", "保存这个图片!" + hitTestResult.getExtra()); //跳转网页打开图片 Uri uri = Uri.parse(hitTestResult.getExtra()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } return true; } }); webview.setOnTouchListener(touchlistener); } private View.OnTouchListener touchlistener = new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { float x = 0, y = 0; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: x = (int) event.getRawX(); y = (int) event.getRawY(); break; case MotionEvent.ACTION_UP://算是点击事件 Log.e("time-------", (event.getEventTime() - event.getDownTime()) + ""); if ((event.getEventTime() - event.getDownTime()) < 100) { if (x - event.getX() < 5 && y - event.getY() < 5) { WebView.HitTestResult hitTestResult = ((WebView) v) .getHitTestResult(); if (hitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE || hitTestResult.getType() == WebView.HitTestResult.IMAGE_ANCHOR_TYPE || hitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { Log.e("单机图片地址------", "保存这个图片!" + hitTestResult.getExtra()); Toast.makeText( MainActivity.this, "保存这个图片!" + hitTestResult.getExtra(), Toast.LENGTH_SHORT).show(); } } } break; case MotionEvent.ACTION_MOVE: break; } return false; } }; }

最后 记得加网络权限!

 

 

你可能感兴趣的:(Android webview实现图文混排)