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分先生。
" +
"
在湖人以103-87战胜黄蜂的比赛" +
"中,科比出战33分钟,17投10中,得到29分6篮板4助攻。其中,第二节比赛他用" +
"一记抛投让自己的职业生涯总得分达到30000分。
科比在这一天是34岁104" +
"天,超越了张伯伦(35岁179天)成为NBA历史上最年轻的30000分先生。
" +
"
詹姆斯目前32岁,如无意外的话,他在本赛" +
"季(生涯第15个赛季)就能超越科比,成为NBA历史最年轻的30000分先生。
" +
"
【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;
}
};
}
最后 记得加网络权限!
推荐阅读
- android第三方框架(五)ButterKnife
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树