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方法。
圆形
创建一个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方法。