Android|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分先生。
" + "Android|Android webview实现图文混排
在湖人以103-87战胜黄蜂的比赛" + "中,科比出战33分钟,17投10中,得到29分6篮板4助攻。其中,第二节比赛他用" + "一记抛投让自己的职业生涯总得分达到30000分。
科比在这一天是34岁104" + "天,超越了张伯伦(35岁179天)成为NBA历史上最年轻的30000分先生。
" + "Android|Android webview实现图文混排
詹姆斯目前32岁,如无意外的话,他在本赛" + "季(生涯第15个赛季)就能超越科比,成为NBA历史最年轻的30000分先生。
" + "Android|Android webview实现图文混排
【Android|Android webview实现图文混排】Android|Android webview实现图文混排
返回搜" + "狐,查看更多
责任编辑:
\""; 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; } }; }

最后 记得加网络权限!


    推荐阅读