自定义View,在Canvas上绘制几何图形
2015-04-05 21:52
399 查看
/CanvasTest/res/layout/activity_main.xml
/CanvasTest/src/com/lxm/canvastest/MyView.java
运行效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/17/8d1a470d3aedd6385718171ea1f06e1d)
源码下载
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <com.lxm.canvastest.MyView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
/CanvasTest/src/com/lxm/canvastest/MyView.java
package com.lxm.canvastest; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LightingColorFilter; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.RectF; import android.graphics.Shader; import android.util.AttributeSet; import android.view.View; public class MyView extends View { public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(3); canvas.drawCircle(40, 40, 30, paint); canvas.drawRect(10, 80,70,140, paint); canvas.drawRect(10, 150,70,190, paint); RectF rect = new RectF(10,200,70,230); canvas.drawRoundRect(rect, 15, 15, paint); RectF oval = new RectF(10, 240, 70,270); canvas.drawOval(oval, paint); Path path = new Path(); path.moveTo(10, 340); path.lineTo(70, 340); path.lineTo(40, 290); path.close(); canvas.drawPath(path, paint); Path path1 = new Path(); path1.moveTo(26,360); path1.lineTo(54, 360); path1.lineTo(70, 392); path1.lineTo(40, 420); path1.lineTo(10,392); path1.close(); canvas.drawPath(path1, paint); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.RED); canvas.drawCircle(120, 40, 30, paint); Shader shader = new LinearGradient(0, 0, 40, 60, new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW}, null, Shader.TileMode.REPEAT); paint.setShader(shader); paint.setShadowLayer(45, 10,10,Color.GRAY); canvas.drawCircle(200, 40,30, paint); paint.setTextSize(24); paint.setShader(null); canvas.drawText(getResources().getString(R.string.cicle), 240,50, paint); } }/CanvasTest/src/com/lxm/canvastest/MainActivity.java
package com.lxm.canvastest; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }/CanvasTest/res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">CanvasTest</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="cicle">圓形</string> </resources>
运行效果:
源码下载
相关文章推荐
- 安卓自定义View进阶-Canvas之绘制图形
- Android中图形的绘制-----自定义View(利用canvas和Path相结合)
- android自定义View绘制几何图形
- android自定义View绘制几何图形
- android学习4-25 使用canvas绘制几何图形(在View内)
- 自定义view绘制几何图形
- 自定义View学习笔记04—Canvas的绘制图形
- Android自定义View高级(二)-Canvas绘制图形
- 自定义View进阶-Canvas之绘制图形
- 自定义View-Canvas之绘制图形
- 安卓自定义View基础05-Canvas之基础图形绘制,点,线,矩形,圆,椭圆,弧形等
- 安卓自定义View进阶-Canvas之绘制图形
- android自定义View绘制几何图形
- 安卓自定义View进阶-Canvas之绘制图形
- Android自定义View绘制几何图形
- 转自大神整理的文章-安卓自定义View进阶-canvas绘制图形
- 自定义View进阶-Canvas之绘制图形
- 自定义view(二)canvas与图形绘制
- android自定义View绘制几何图形
- Android 自定义View(Canvas和Path)绘制基础图形(二)