




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android绘图机制(二)自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆形,三角形,多边形等.新建一个项目然后我们创建一个listview,每个图案一个Activity,这样看起来是不是很顺眼 编写ListViewprivate ListView listview;/item上的数据源 private String name = 矩形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片;/listview的adapterprivate ArrayAdapteradapter;private void initView() /实例化listview listview = (ListView) findViewById(R.id.listview); /实例化数据源 adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, name); /listview设置adapter listview.setAdapter(adapter); /listview设置点击事件 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() Override public void onItemClick(AdapterView parent, View view, int position, long id) /判断点击了第几个 if (id = 0) /矩形 startActivity(new Intent(MainActivity.this, RectActivity.class); else if (id = 1) /圆形 startActivity(new Intent(MainActivity.this, CircleActivity.class); else if (id = 2) /三角形 startActivity(new Intent(MainActivity.this, TrigonActivity.class); else if (id = 3) /扇形 startActivity(new Intent(MainActivity.this, SectorActivity.class); else if (id = 4) /椭圆 startActivity(new Intent(MainActivity.this, OvalActivity.class); else if (id = 5) /曲线 startActivity(new Intent(MainActivity.this, PathActivity.class); else if (id = 6) /曲线 startActivity(new Intent(MainActivity.this, TvIvActivity.class); );效果是这样的后续可以添加1.矩形RectActivity好的,上面写ListView的代码是不是很简单?拿我们新建一个RectActivity去画点了,首先我们要新建一个RectView继承Viewpackage com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;/* * 矩形 * Created by LGL on 2016/1/7. */public class RectView extends View /无参 public RectView(Context context) super(context); /有参 public RectView(Context context, AttributeSet attrs) super(context, attrs); Override protected void onDraw(Canvas canvas) super.onDraw(canvas); / 创建画笔 Paint p = new Paint(); /设置实心 p.setStyle(Paint.Style.FILL); / 设置红色 p.setColor(Color.BLACK); / 设置画笔的锯齿效果 p.setAntiAlias(true); /绘制 canvas.drawRect(50, 100, 300, 300, p); 截图1.圆形CircleActivity我们还是新建一个CircleActivity去画点了,首先我们要新建一个CircleView继承Viewpackage com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;import android.view.WindowManager;/* * 圆 * Created by LGL on 2016/1/7. */public class CircleView extends View int width; int height; /无参 public CircleView(Context context) super(context); init(); /有参 public CircleView(Context context, AttributeSet attrs) super(context, attrs); init(); private void init() /获取屏幕的宽高 /Android绘图机制(一)自定义View的基础属性和方法里面有讲 WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); Override protected void onDraw(Canvas canvas) super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); / 设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width / 2, height / 2, width / 2, p); 截图3.三角形TrigonActivity我们还是新建一个TrigonActivity去画点了,首先我们要新建一个trigonView继承Viewpackage com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;/* * 三角形 * Created by LGL on 2016/1/7. */public class TrigonView extends View /无参 public TrigonView(Context context) super(context); /有参 public TrigonView(Context context, AttributeSet attrs) super(context, attrs); Override protected void onDraw(Canvas canvas) super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); /实例化路径 Path path = new Path(); path.moveTo(80, 200);/ 此点为多边形的起点 path.lineTo(120, 250); path.lineTo(80, 250); path.close(); / 使这些点构成封闭的多边形 canvas.drawPath(path, p); 4.扇形SectorActivitypackage com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/* * 扇形 * Created by LGL on 2016/1/8. */public class SectorView extends View public SectorView(Context context) super(text); public SectorView(Context context, AttributeSet attrs) super(context, attrs); Override protected void onDraw(Canvas canvas) super.onDraw(canvas); / 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(60, 100, 200, 240); canvas.drawArc(rectF, 200, 130, true, p); 5.椭圆OvalActivitypackage com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/* * 椭圆 * Created by LGL on 2016/1/8. */public class OvalView extends View public OvalView(Context context) super(context); public OvalView(Context context, AttributeSet attrs) super(context, attrs); Override protected void onDraw(Canvas canvas) super.onDraw(canvas); / 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(60, 100, 200, 240); rectF.set(210,100,250,130); canvas.drawOval(rectF, p); 椭圆的思路和扇形是一样的,这里就不演示了截图6.曲线PathActivitypackage com.lgl.view.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;/* * Created by LGL on 2016/1/8. */public class PathView extends View public PathView(Context context) super(context); public PathView(Context context, AttributeSet attrs) super(context, attrs); Override protected void onDraw(Canvas canvas) super.onDraw(canvas); / 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); p.reset(); /设置空心 p.setStyle(Paint.Style.STROKE); Path path = new Path(); path.moveTo(100, 320);/设置Path的起点 path.quadTo(150, 310, 170, 400); /设置路径点和终点 canvas.drawPath(path, p); 截图7.文字和图片TvIvActivitypackage com.lgl.view.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import and
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 1014-3:2025 EN Coke - Part 3: Determination of porosity
- 【正版授权】 IEC 60888:1987 FR-D Zinc-coated steel wires for stranded conductors
- 【正版授权】 IEC 60404-1:2016+AMD1:2025 CSV EN Magnetic materials - Part 1: Classification
- 【正版授权】 IEC 60245-5:1994 EN-D Rubber insulated cables - Rated voltages up to and including 450/750 V - Part 5: Lift cables
- 雀巢产品面试题及答案
- 村计生考试题及答案
- 计量基础考试题及答案
- 铣工中级考试题及答案
- 心理影射测试题及答案
- 台虎钳考试题及答案
- 建筑公司分包合同管理办法
- 2025至2030苏打水行业发展趋势分析与未来投资战略咨询研究报告
- 2025年秋季学期德育工作计划:向下扎根向上开花
- 附着式钢管抱杆铁塔组立施工方案
- 工贸企业重大事故隐患判定标准培训PPT
- (完整word版)身份证号码前6位表示的地区对照表
- 高中生物的学习方法
- GE彩超Logiq操作手册培训课件
- 罐头食品工艺
- 混凝土外加剂检测原始记录表
- GB/T 15670-1995农药登记毒理学试验方法
评论
0/150
提交评论