文档章节

Android怎么实现网易新闻的图文混排?

java_speed
 java_speed
发布于 2016/05/12 12:48
字数 186
阅读 1053
收藏 3
点赞 2
评论 0

刚开始以为是WebView,后来发现被坑了。不断在https://impress.pw寻找,找到http://stackoverflow.com/questions/25194549/using-picasso-with-image-getter

问题解决,贴一下源码:

public class PicassoImageGetter implements Html.ImageGetter {
    private TextView textView = null;

    public PicassoImageGetter(TextView target) {
        textView = target;
    }

    @Override
    public Drawable getDrawable(final String source) {
        BitmapDrawablePlaceHolder drawable = new BitmapDrawablePlaceHolder();

        Picasso.with(ShopApp.GLOBAL_CONTEXT)
                .load(source)
                .placeholder(R.drawable.item_defaut_img)
//                .error(R.drawable.)
                .into(drawable);

        return drawable;
    }

    class BitmapDrawablePlaceHolder extends BitmapDrawable implements Target {

        protected Drawable drawable;

        @Override
        public void draw(final Canvas canvas) {
            if (drawable != null) {
                drawable.draw(canvas);
            }
        }

        public void setDrawable(Drawable drawable) {
            this.drawable = drawable;
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            if (textView != null) {
                textView.setText(textView.getText());
            }
        }

        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            setDrawable(new BitmapDrawable(ShopApp.GLOBAL_CONTEXT.getResources(), bitmap));
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
            setDrawable(errorDrawable);
        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {
        }
    }
}

调用非常简单:

 contentView.setText(Html.fromHtml(dto.content, new PicassoImageGetter(contentView), null));

 

© 著作权归作者所有

共有 人打赏支持
java_speed
粉丝 110
博文 44
码字总数 17031
作品 1
成都
程序员
java.lang.AssertionError Android WebView

先描述下这个问题板块的功能:长文编辑器,图文混排,图片实现懒加载(直接点就是可以,写一篇几十页的长文章,能够自由插图,滑动加载图片)。实现方式,采用webview,结合javascript、htm...

Sn__
07/11
0
0
SlidingMenu和ActionbarActivity实现slidingmenu

非常喜欢 网易新闻客户端的 界面风格,一直都想知道是怎么实现的。下午敲代码太累了,浏览了一下网页发现了几个android的开源项目,然后和网易新闻客户端一对比知道使用的应该是sliding men...

手绘灿烂
2014/04/08
0
0
Android中的File文件存储及读取file中的Bitmap

今年看了下android的文件存储,大致和java实现差不多 android提供了如下两个方法来打开本应用程序的数据文件的IO流: FileInputStream openFileInput(fileName); //输入流 FileOutputStream...

爱吃橙子的小石头
2014/12/07
0
0
Android 动态图文混排的常用方法

DrawableIcon的设置 对于TextView或者EditText动态设置drawableLeft,drawableRight,drawableTop,drawableBottom,drawableStart,drawableEnd的方法总结 Android中提供了许多动态设置的方...

IamOkay
2015/02/07
0
1
移动Web开发图片自适应两种常见情况解决方案

在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集,这种文章只需要左右滑动浏览,最好的体验是让图片缩放显示在屏幕有效范围内,防止图片太...

果树啊
2015/06/03
0
0
图文(html)混排控件的使用问题

向网易新闻客户端一样的当点击ListView进去的详细内容的时候 就会有图文混排(html) 我想问一下 那么使用的控件是什么 我用TextView显示html文字和图片会感觉明显的卡 我想用webView的效果又...

郎里个郎里个郎
2013/07/08
193
1
《IT蓝豹》listview实现各种版面设计功能

本项目主要listview实现各种版面设计功能,有实现列表的,gridview效果的,有混排效果的等等。 自定义TwoWayView继承RecyclerView,通过TwoWayView去根据布局实现到底选择哪一个效果, 本项目...

抉择很难
2015/11/11
0
0
网易新闻客户端新闻详情如何实现?

请教大神们,类似网易新闻客户端中新闻详情那种排版模式是怎么实现的.? 就是文字,视频混排那种效果,点击视频后播放...是用webView加载的吗? ,能说详细点吗,最好给个demo谢谢啦...

asker517
2014/01/24
704
1
新版网易新闻客户端应用源码

源码下载: http://code.662p.com/view/11510.html 演示图: 1.这次更新的亮点是添加了天气效果以后也可以用网易新闻看天气预报了,各种轻微的动画效果也没有放过。 2.新版的网易新闻,整改了...

tianyahala
2015/10/16
710
0
Android 解决图文混排,图片和文字居中对齐问题(ImageSpan)

一. 概述 众所周知,Android图文混排可以通过SpannableString来实现,通过在相应位置使用ImageSpan替换即可,但是使用过的人会发现,imageSpan只提供了两种对齐方式,如下所示: 使用和运行效...

Mr云台
2017/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CoreText进阶(五)- 文字排版样式和效果

CoreText进阶(五)- 文字排版样式和效果 效果 以下是三个设置了不同属性的效果图 第一个设置了文字颜色为红色,字体为16号 第二个设置了文字颜色为灰色,字体为16号,对其为居中 第三个设置...

aron1992
18分钟前
1
0
10.23 linux任务计划cron~10.27 target介绍

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是...

洗香香
28分钟前
0
0
告警系统主脚本、告警系统配置文件、告警系统监控项目

20.20 告警系统主脚本 告警系统主脚本 main.sh内容 #!/bin/bash#Written by aming.# 是否发送邮件的开关export send=1# 过滤ip地址export addr=`/sbin/ifconfig |grep -A1 "en...

lyy549745
31分钟前
0
0
Don’t Repeat Yourself

在软件工程中,Don’t Repeat Yourself(DRY)是软件开发的原则,旨在减少重复,用抽象代替它,使用数据规范化来避免冗余。 这个原则在维基百科上是说是由Andy Hunt和Dave Thomas《The Pragmat...

woshixin
33分钟前
0
0
搭建webpack项目框架

作者:汪娇娇 时间:2018年6月4日 一、说明 随着业务发展和前端人员的增加,搭建一个通用框架以及制定统一规范就成了必然。对于选型这方面,一开始好像就没考虑其他框架,直接选了webpack。w...

娇娇jojojo
40分钟前
0
0
Java基础——面向对象(内部类)

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 内部类: 1.有名内部类 2.无名内部类 内部类申请...

凯哥学堂
49分钟前
0
0
HttpClient内部三个超时时间的区别

RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(config.connReqTimeout) //从连接池中获取连接的超时时间 ......

1713716445
58分钟前
0
0
每天一个命令SCP

每天一个命令:SCP scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速...

河图再现
今天
0
0
cron/chkconfig/systemd/unit/target

linux任务计划 : cron工具 任务计划在运维工作中用到的比较多,大部分系统管理工作都是通过定期自动执行某个脚本来完成。 查看linux中任务计划的配置文件: /etc/crontab [root@yolks-001 ~]...

Hi_Yolks
今天
1
0
ftp攻略

Vsftpd完全攻略(一)ftp原理与vsftp安装:https://www.iyunv.com/thread-44698-1-1.html Vsftpd完全攻略(二)设置匿名用户也支持下载和上传与创建目录:https://www.iyunv.com/forum.php?mo...

寰宇01
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部