日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android html图片点击事件,Android TextView加载HTMl图文之添加点击事件和查看图片

發布時間:2023/12/15 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android html图片点击事件,Android TextView加载HTMl图文之添加点击事件和查看图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

用TextView顯示Html圖文,每一個需求都是需要探索的,不再是簡單的添加點擊事件就可以了。

1、如何添加點擊事件

這里要使用上在Html.forHtml()方法中的第四個參數:Html.TagHandler。顧名思義就是標簽處理的類。

charSequence = Html.fromHtml(article.getContent(), Html.FROM_HTML_MODE_LEGACY, new DetailImageGetter(this, contentView), new DetailTagHandler(this));

然后就是創建這個自定義處理類了:

public class DetailTagHandler implements Html.TagHandler {

private Context context;

private ArrayList strings;

public DetailTagHandler(Context context) {

this.context = context;

strings = new ArrayList<>();

}

@Override

public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {

// 處理標簽

if ("img".equals(tag.toLowerCase(Locale.getDefault()))) {

// 獲取長度

int len = output.length();

// 獲取圖片地址

ImageSpan[] images = output.getSpans(len - 1, len, ImageSpan.class);

String imgURL = images[0].getSource();

// 記錄所有圖片地址

strings.add(imgURL);

// 記錄是第幾張圖片

int position = strings.size()-1;

// 使圖片可點擊并監聽點擊事件

output.setSpan(new ClickableImage(context, position), len - 1, len,

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

}

}

private class ClickableImage extends ClickableSpan {

private Context context;

private int position;

public ClickableImage(Context context, int position) {

this.context = context;

this.position = position;

}

@Override

public void onClick(View widget) {

Intent intent = new Intent(context, PhotoActivity.class);

intent.putStringArrayListExtra("url", strings);

intent.putExtra("position", position);

context.startActivity(intent);

}

}

}

簡單的說明一下,

1、handleTag()

這個方法是在Html解析Html的時候調用的,這里是處理了“img“標簽,也可以在這里給其他標簽自定義內容。方法里的代碼已經給出了注釋,沒什么好說的。

2、ClickableImage類

這個內部類就是監聽圖片點擊的,需要傳遞什么數據直接放進來就好了。

2、查看圖片

我使用的是Github上的第三方圖片查看控件PhotoView。

貼下地址:

github地址:https://github.com/chrisbanes/PhotoView

集成:

在projects的build中:

allprojects {

repositories {

jcenter()

maven { url "https://jitpack.io" }

}

}

在module的build中:

compile 'com.github.chrisbanes:PhotoView:1.3.0'

然后就是用ViewPager和適配器來顯示PhotoView了。

PhotoView的使用方法和圖片加載方法:

@Override

public Object instantiateItem(ViewGroup container, int position) {

View contentView = LayoutInflater.from(context).inflate(R.layout.item_photo, container, false);

final PhotoView photoView = (PhotoView) contentView.findViewById(R.id.item_photo_view);

final PhotoViewAttacher photoViewAttacher = new PhotoViewAttacher(photoView);

Glide.with(context)

.load(data.get(position))

.asBitmap()

.placeholder(R.drawable.banner_holder)

.diskCacheStrategy(DiskCacheStrategy.ALL)

.into(new SimpleTarget() {

@Override

public void onResourceReady(Bitmap resource, GlideAnimation super Bitmap> glideAnimation) {

photoView.setImageBitmap(resource);

photoViewAttacher.update();

}

});

container.addView(contentView);

return contentView;

}

這里用ViewPager的話需要注意一個問題:

在縮放的時候會遇到崩潰的情況。

java.lang.IllegalArgumentException: pointerIndex out of range

這是android系統自身的原因,如果要改的話就需要去修改底層庫,另外一種解決方法就是抓取這個異常,處理掉。

那么在哪里處理這個異常呢?一下子很難去找到抓取的點。

其實只要在事件分發的角度去考慮就行了,自定義一個ViewPager去重寫事件分發方法:

public class PhotoViewPager extends ViewPager {

public PhotoViewPager(Context context) {

super(context);

}

public PhotoViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

try {

return super.onTouchEvent(ev);

} catch (IllegalArgumentException ex) {

ex.printStackTrace();

}

return false;

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

try {

return super.onInterceptTouchEvent(ev);

} catch (IllegalArgumentException ex) {

ex.printStackTrace();

}

return false;

}

}

好了!到這里就大功告成了。

3、總結

在用TextView顯示Html圖文的時候,需要自己去改的東西太多了,經常把自己卡住,但只要有了靈活的思維,很多問題其實很簡單可以解決。

總結

以上是生活随笔為你收集整理的android html图片点击事件,Android TextView加载HTMl图文之添加点击事件和查看图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。