Android实现长图展开与收起效果

  

<强>前言:
  

  

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

  

<>强效果:

  

 Android实现长图展开与收起效果”> <强> <br/>
  </强> </p>
  <p> <>强基本思路:</强> <br/>
  </p>
  <p>利用scaleType的矩阵属性以及直接改变图片的高度来实现图片的收起与展开。</p>
  <p> <>强过程:<br/>
  </强> </p>
  <p> </p>
  <p> </p>
  <p> 1。中心:保持原图的大小,显示在ImageView的中心。当原图的大小大于ImageView的大小,超过部分裁剪处理;<br/>
  2. centerinside:以原图完全显示为目的,将图片的内容完整居中显示,通过按比例缩小原图的尺寸宽(高)等于或小于ImageView的宽(高)。如果原图的大小本身就小于ImageView的大小,则原图的尺寸不作任何处理,居中显示在ImageView; <br/>
  3.centerCrop:以填满整个ImageView为目的,将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止(指的是图像的宽和高都要填满),原图超过ImageView的部分作裁剪处理;<br/>
  4.矩阵:不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理;<br/>
  5.fitCenter:把原图按比例扩大或缩小到ImageView的高度,居中显示,<br/>
  6. fitend:把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的下部分位置;<br/>
  7. fitstart:把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的上部分位置;<br/>
  8.fitXY:把原图按照指定的大小在视图中显示,拉伸显示图片,不保持原比例,填满ImageView <br/>
  </p>
  <p> <强> </强> </p>
  <p> <强> </强> </p>
  
  <pre类=   & lt; ImageView   android: id=癅 + id/iv_long_picture”   android: layout_width=" match_parent "   android: layout_height=" @dimen/dp_146”   android: layout_below=" @ id/tv_main_content_question”   android: adjustViewBounds=" true "   android: scaleType=熬卣蟆?   android: src=" https://www.yisu.com/zixun/@color color_333333 "/比;   & lt; TextView   android: id=癅 + id/tv_expand_collapse”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_below=" @ id/iv_long_picture”   android: layout_marginBottom=" @dimen/dp_16”   android: layout_marginTop=" @dimen/dp_10”   android: drawableEnd=" @drawable/down_icon”   android: drawablePadding=" @dimen/dp_7”   android:文本=" @string/expand_all”   android:输入textColor=" @color/color_99”   android: textSize=" @dimen/sp_14”   android: textStyle=按蟮ā?   android:可见性="消失"/祝辞      

  

使用滑翔加载的图片

        Glide.with(这)   .load (mainContentBean.getAccessory () . get (0))   .into (ivLongPicture);      

  

直接通过设置imageView的高度来实现图片的展开与收起,

        tvExpandCollapse。setOnClickListener(新View.OnClickListener () {   布尔扩大=false;   @Override   公共空间>   Glide.with(这)   .load (mainContentBean.getAccessory () . get (0))   .asBitmap ()   .listener(新RequestListener<字符串,Bitmap> () {   @Override   公共布尔onException(异常e弦模型,Target目标,布尔isFirstResource) {   返回错误;   }      @Override   公共布尔onResourceReady(位图资源,字符串模式,Target目标,布尔isFromMemoryCache,布尔isFirstResource) {   int imageWidth=resource.getWidth ();   int imageHeight=resource.getHeight ();=(WindowManager) MainContentActivity.this WindowManager经理   .getSystemService (Context.WINDOW_SERVICE);//屏幕宽度减去利润值   .getWidth int宽度=manager.getDefaultDisplay () ()——DensityUtil.dip2px (MainContentActivity。这32);      浮动scaleRate=宽* 1.0 f/imageWidth;//设置矩阵   矩阵矩阵=new矩阵();//设置放缩比例   矩阵。setScale (scaleRate scaleRate);      ivLongPicture.setImageMatrix(矩阵);      如果(imageHeight * scaleRate祝辞DensityUtil.dip2px (MainContentActivity。这个,146)){   tvExpandCollapse.setVisibility (View.VISIBLE);   其他}{   tvExpandCollapse.setVisibility (View.GONE);   }      返回错误;   }   })   .into (ivLongPicture);   

Android实现长图展开与收起效果