需求
上传图片时在图片上增加蒙层,蒙层随着上传的大小由下自上逐渐缩短。
分析
1、用xml文件画一个正方形的shape
2、利用ClipdDrawable来实现图片的动态剪切
3、使用AsynTask来控制图片的上传,然后动态的改变ClipDrawable.setLevel()方法中的值,这样基本就能达到图片上传蒙层的效果。
其中,本文中,在将图片数据流写向网络时,上传进度的值是根据正向的输出流的速度来判断的。也就是说不是服务器接收图片的速度,即使进度条表示图片已完全上传,也只是表示将图片上传到网络的大小。
实现
1、定义正方形的shape,drawable\mask.xml
android:shape="rectangle">
2、定义ClipDrawable由下自上的方式剪切,drawable\clip.xml
android:drawable="@drawable/bg_feedback_mask"
android:clipOrientation="vertical"
android:gravity="top"/>
3、在主界面中定义ImageView,将clip.xml引入
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"