Android开发-----03-使用Canvas绘制虚线……
来源:互联网 发布:淘宝买家如何导出订单 编辑:程序博客网 时间:2024/05/18 01:41
本章只关注绘制虚线,不关注Canvas的其它操作。
Android中,Canvas的功能都非常强大,一般情况下,用到了就去研究,用不到就懒得理会它。但是随着项目的需求不断增加,再怎么不想了解Canvas,也会或多或少的和这玩意儿接触。
例如在Android中,如果自定义的控件需要使用虚线该怎么完成呢。
1、 可以使用美工,让美工进行切图
2、 可以自己使用画笔进行绘制
现在提供这两种方式的操作:
package com.example.aaaaa;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.DashPathEffect;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;public class MyView extends View {/** 中央分割线的绘制 **/ private Paint linePaint; private Paint strockpaint; private Paint p;private Bitmap decodeResource;public MyView(Context context, AttributeSet attrs) {super(context, attrs);linePaint = new Paint();linePaint.setAntiAlias(true);//linePaint.setColor(Color.parseColor("#aeaeae"));linePaint.setColor(Color.RED);linePaint.setStrokeWidth(2f);linePaint.setTextSize(25);linePaint.setStrokeJoin(Paint.Join.ROUND);strockpaint = new Paint();strockpaint.setAntiAlias(true);strockpaint.setStyle(Paint.Style.STROKE); strockpaint.setColor(Color.BLUE);DashPathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1); strockpaint.setPathEffect(effects);p = new Paint(Paint.ANTI_ALIAS_FLAG);p.setStyle(Style.STROKE);p.setColor(Color.RED);p.setStrokeWidth(1);p.setTextSize(30);p.setStrokeWidth(10);DashPathEffect effects1 = new DashPathEffect(new float[] { 1, 4, 7, 8}, 1);p.setPathEffect(effects1);decodeResource = BitmapFactory.decodeResource(getResources(),R.drawable.seat_center_line);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawLine(100, 0, 600, 1000, linePaint);canvas.drawCircle(202, 202, 100, strockpaint);canvas.drawLine(0, 0, 400, 400, strockpaint);canvas.drawRect(20, 100, 21, 450, strockpaint);canvas.drawText("绘制红色的虚线", 210, 300, linePaint);canvas.drawLine(200, 140, 500, 40, p);//绘制红色的虚线Path path = new Path();path.moveTo(200, 300);path.lineTo(300, 1600);<span style="color:#009900;">//关注:①使用Canvas绘制虚线</span>canvas.drawPath(path , p);<span style="color:#009900;">//关注:②使用Canvas绘制虚线Bitmap--图片是虚线的</span>canvas.drawBitmap(createRepeaterY(1000, decodeResource), 300, 300, null);}//绘制重复bitmap的图片public Bitmap createRepeaterY(int height, Bitmap src){int count = (height + src.getHeight() - 1) / src.getHeight();Bitmap bitmap = Bitmap.createBitmap(src.getWidth(), height, Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);for(int idx = 0; idx < count; ++ idx){canvas.drawBitmap(src, 0, idx * src.getHeight(), null);}return bitmap;}}
效果图如下:
当然也可是使用drawRect达到虚线的效果,但是如果一个控件要求有缩放的功能,那么drawRect绘制的虚线会在所放的时候连接到一块,变成了波浪线。
项目中用到的图片:
0 0
- Android开发-----03-使用Canvas绘制虚线……
- android 用canvas绘制虚线
- canvas绘制虚线
- canvas-绘制虚线
- canvas 绘制虚线
- CANVAS绘制虚线和圆点虚线
- Android 使用Canvas+Paint画虚线
- iOS 开发 绘制虚线
- android 绘制虚线效果
- android绘制虚线
- Android 绘制虚线
- Android竖虚线绘制
- Android中绘制虚线
- Android竖虚线绘制
- Android Shape绘制虚线
- Android中绘制虚线
- Android 绘制虚线
- 使用 shape 绘制虚线
- java与web项目链接数据库--2014/10/30
- swift 简单使用
- #、##和__VA_ARGS__(关于宏)
- eclipse默认配色(内含恢复文件和恢复方法)
- Property 'XX' not found on type XXXX
- Android开发-----03-使用Canvas绘制虚线……
- 菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t
- mysql同表拷贝数据,修改数据
- stm8s103f3p EEPROM的读写
- readelf命令的使用
- 算法导论第二章C++实现归并算法排序
- 微时代的微电影营销
- Eclipse颜色设置
- PHP中删除数组中特定元素的两种方法