android圆角矩形图片的实现进而讨论view自定义的要点

实现圆角的图片一般会有两种方法,一种是使用Xfermode,一种是Shader

Shaderde 实现可以看这里:http://blog.csdn.net/lmj623565791/article/details/41967509

具体实现圆角图片的代码就不在这里介绍了,其中最重要的就是BitmapShader,关于BitmapShader,最好去看:http://blog.csdn.net/aigestudio/article/details/41799811这里有非常详细的介绍。paint.setshader()的意思就相当于给画笔一个样式,有点像印章一样。还要注意原文中的最后一点状态的存储和回复,是在重新加载之后读取上一次的设置的状态,其实如果就针对旋转屏幕的话,我这边还有一种解决的方法,我们知道当旋转屏幕的时候,activity会被ondestory然后重新的加载执行oncreate方法,我们可以做的是不让这个activity重新加载。

修改AndroidManifest.xml
在对应的activity中配置android:configChanges=”orientation|keyboardHidden|screenSize”属性,这样在旋转屏幕的时候就不会重新加载了,只会执行onConfigchanged方法。

如果是内存不足,而恰好我们的Activity置于后台,不幸被重启的情况就可以采用原文中的方法。也可以将状态保存到配置文件中

最后这里还要说的是自定义view的时候需要重写的方法,自定义view的时候最重要的就是重写onDraw方法,如果有与用户的交互就再重写onTouchEvent事件(不是viewgroup所以没有什么事件分发),辅助的会实现onmeasure方法,用来确定view的大小属性,这就是一般实现自定义view的步骤,拿圆角图片为例,首先在创建对象的时候得到一些初始值,类型以及圆角的半径等,然后重写onmeasure方法确定view该在哪里画以及画多大,因为这里没有与用户的交互所以不用重写onTouchevent方法,只需要在onDraw方法中根据上面得到的大小位置信息,画出view就行。

你可能感兴趣的:(android)