Android不使用图片框架,实现加载类似微博超长图片的技巧手法;

声明;一个很low的做法,目前只能做单纯的展示,有需求后续再加;

项目有个紧急需要加说明书的问题;为了快速就直接上的图片,但是图片太长如果单纯使用ImageView效果不理想;没时间去熟悉框架;就实现这个加载超长图的小思路;记录一下,以供学习;

如图:

思路:

1.滑动的话,肯定用到了ScrollView;

2.Scrollview里面放置LinearLayout,动态代码,addView(ImageView);效果成功,感觉ScrollView直接嵌套ImageView有问题,没使用

所遇到的问题:

第一: 当图片添加进去之后,图片没有顶头开始,而是最上最下留有空区域;

第二:当图片太长了,超过了系统的临界值,无法渲染图片;

有了思路,带着问题接着开车;

布局文件,

   <ScrollView
            android:id="@+id/scroll"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <LinearLayout
                android:id="@+id/showImageView"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
            </LinearLayout>
        </ScrollView>
 
LinearLayout showImageView= (LinearLayout) findViewById(R.id.ll_group); 
ImageView imageView = new ImageView(this); 
imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //设置图片宽高 imageView.setImageResource(R.drawable.ic_launcher); //图片资源 showImageView.addView(imageView); //动态添加图片


动态代码添加了长图,但是坑来了,

你会发现,上面和最下面留有,很大的空隙;  不要急,解决方式2行代码

		//给你的imageview添加2个属性
		imageView.setScaleType(ScaleType.FIT_XY); // 解决上下空白问题
		imageView.setAdjustViewBounds(true); // 解决图片失真

哎,发现神奇的可以了!!这就解决了? 别急还有关卡等着;你会发现在不同的设备上有可能无法实现很长很长的图;

这个就是第二个问题,超过了临界值,无法渲染;

这个解决方案,就更low了

第一种:把那张很大的图切割成许多小图,然后多new几个ImageView,多addView几次:
第二种:取消硬件加速,清单文件中添加一条属性

 <application
        android:hardwareAccelerated="false"

第三种:使用WebView

再次,来看,哈哈效果实现;

附注: 

ImageView 的adjustViewBounds 属性
  取值为true时:
Adjust the ImageView's bounds to preserve the aspect ration of its drawable.
调整ImageView的界限来保持图像纵横比不变。
这并不意味着ImageView的纵横比就一定和图像的纵横比相同
 
XML定义里的android:adjustViewBounds="true"会将这个ImageView的scaleType设为fitCenter。不过这个fitCenter会被后面定义的scaleType属性覆盖(如果定义了的话),除非在Java代码里再次显示调用setAdjustViewBounds(true)。
 
如果设置的layout_width与layout_height都是定值,那么设置adjustViewBounds是没有效果的,ImageView将始终是设定的定值的宽高。
 
如果设置的layout_width与layout_height都是wrap_content,那么设置adjustViewBounds是没有意义的,因为ImageView将始终与图片拥有相同的宽高比(但是并不是相同的宽高值,通常都会放大一些)。
 
如果两者中一个是定值,一个是wrap_content,比如layout_width="100px",layout_height="wrap_content"时,ImageView的宽将始终是100px,而高则分两种情况:
(1)当图片的宽小于100px时,layout_height将与图片的高相同,即图片不会缩放,完整显示在ImageView中,ImageView高度与图片实际高度相同。图片没有占满ImageView,ImageView中有空白。
(2)当图片的宽大于等于100px时,此时ImageView将与图片拥有相同的宽高比,因此ImageView的layout_height值为:100除以图片的宽高比。比如图片是500X500的,那么layout_height是100。图片将保持宽高比缩放,完整显示在ImageView中,并且完全占满ImageView。

📢作者:小空和小芝中的小空

📢转载说明:务必注明来源:https://zhima.blog.csdn.net/。

📢欢迎点赞👍收藏🌟留言📝

📢链接Q群:👪技术:204918251 👪资源:877807592

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻粒儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值