Android笔记-canvas与自定义view相关内容

来源:互联网 发布:python 余弦相似度 编辑:程序博客网 时间:2024/05/22 09:46
Canvas画布+Paint画笔
圆形


创建一个Bitmap对象的方法:
Bitmap.createBitmap(200, 200, Config.ARGB_8888);


调整一个Bitmap图形的大小的方法:
Bitmap.createScaledBitmap(bitmap, 200, 200, true);


着色器:
着色器有线性颜色渐变着色器,放射颜色渐变着色器和图片着色器
线性渐变着色器:
LinearGradient(0, 0, 200, 200, 
    Color.GREEN, Color.BLUE, 
    TileMode.CLAMP);
放射颜色渐变着色器
RadialGradient(100, 100, 100, 
    Color.RED, Color.YELLOW, 
    TileMode.CLAMP);
图片着色器
BitmapShader(bitmap ,TileMode.CLAMP, TileMode.CLAMP);


利用着色器绘图,只要将创建好的着色器放置到画笔上即可:
paint.setShader(shader);


利用图形混合模式
图形混合模式是用来处理两幅有相交区域图形的一些列的算法
采用不同的混合模式可以产生不同的效果
安卓中一共有18种混合模式
比较常用的有SRC_IN DST_IN等


     
dp和px的换算关系


dp是一个绝对值单位 160dp=1英寸=25.4毫米
屏幕密度 1英寸可以显示多少个像素点
ldpi  120px/英寸
mdpi  160px/英寸
hdpi  240px/英寸
xhdpi 320px/英寸 


dp    px    屏幕密度
 1    .75    ldpi
 1    1      mdpi    
 1    1.5    hdpi
 1    2     xhdpi


自定义View设置自定义属性
自定义属性写在 res/value/attrs.xml文件中
<resources>
    <declare-styleable name="CircleImageView">
        <attr name="border_color" format="color"></attr>
        <attr name="border_width" format="dimension"></attr>
    </declare-styleable>
</resources>
声明了两个自定义属性:
border_color属性,该属性接收的属性值类型为颜色
border_width属性,该属性接收的属性值类型为尺寸
注意:使用IDE写这个文件的时候,没有自动提示功能,必须注意拼写,不要写错了


在布局文件中使用自定义属性,使用前,一定要声明命名空间:
 例如:xmlns:自定义的名字="http://schemas.android.com/apk/res/应用包名"
 命名空间的名字为“自定义的名字”,地址为http://schemas.android.com/apk/res/应用包名
 使用自定义属性的时候:
 自定义的名字:border_color = "#ff00ffff"  边框的颜色值
 自定义的名字:border_width = "2dp"        边框的粗度
 
 在自定义View中读取在布局文件中添加的自定义属性的值
 一般在构造方法中添加一个init(context,attrs)方法
 private void init(Context context, AttributeSet attrs) {
TypedArray t = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView);
borderColor = t.getColor(
R.styleable.CircleImageView_border_color, 
Color.WHITE);
borderWidth = t.getDimensionPixelSize(
R.styleable.CircleImageView_border_width, 
2);
t.recycle();
}
使用TypedArray对象后,一定要记住回收资源,调用它的recyle方法。
0 0
原创粉丝点击