长图的展开与收起(Android)

在app的文章中,经常会夹杂着一些特别长的长图。在阅读的时候需要滑动很久才能看图片下方的文字,因此对于长图只展示图片上面一部分,并且可以展开这个功能是很重要的。

效果:

长图的展开与收起(Android)

基本思路:

利用scaleType的matrix属性以及直接改变图片的高度来实现图片的收起与展开。

过程: 开始尝试: scaleType属性介绍:

center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理;

centerInside:以原图完全显示为目的,将图片的内容完整居中显示,通过按比例缩小原图的size宽(高)等于或小于ImageView的宽(高)。如果原图的size本身就小于ImageView的size,则原图的size不作任何处理,居中显示在ImageView;

centerCrop:以填满整个ImageView为目的,将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止(指的是ImageView的宽和高都要填满),原图超过ImageView的部分作裁剪处理;

matrix:不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理;

fitCenter:把原图按比例扩大或缩小到ImageView的高度,居中显示;

fitEnd:把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的下部分位置;

fitStart:把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的上部分位置;

fitXY:把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView

根据以上属性介绍,可以知道matrix属性是我们要的。

基本布局:

1 <ImageView 2 android:id="@+id/iv_long_picture" 3 android:layout_width="match_parent" 4 android:layout_height="@dimen/dp_146" 5 android:layout_below="@id/tv_main_content_question" 6 android:adjustViewBounds="true" 7 android:scaleType="matrix" 8 android:src="@color/color_333333" /> 9 <TextView 10 android:id="@+id/tv_expand_collapse" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:layout_below="@id/iv_long_picture" 14 android:layout_marginBottom="@dimen/dp_16" 15 android:layout_marginTop="@dimen/dp_10" 16 android:drawableEnd="@drawable/down_icon" 17 android:drawablePadding="@dimen/dp_7" 18 android:text="@string/expand_all" 19 android:textColor="@color/color_99" 20 android:textSize="@dimen/sp_14" 21 android:textStyle="bold" 22 android:visibility="gone" />

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsjws.html