关闭

Android之图形图像之使用Path类总结

标签: AndroidPath类
633人阅读 评论(0) 收藏 举报
分类:

Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的drawPath(path,paint)即可沿着路径绘制图形

Android还为路径绘制提供了PathEffect来定义绘制效果,PathEffect包含如下子类

ComposePathEffect

CornerPathEffect

DashPathEffect

DiscretePathEffect

PathDashPathEffect

SumPathEffect

下面的示例将会逐一使用上面的绘制效果

package WangLi.Graphics.PathTest;  
  
import android.app.Activity;  
import android.content.Context;  
import android.graphics.Canvas;  
import android.graphics.Color;  
import android.graphics.ComposePathEffect;  
import android.graphics.CornerPathEffect;  
import android.graphics.DashPathEffect;  
import android.graphics.DiscretePathEffect;  
import android.graphics.Paint;  
import android.graphics.Path;  
import android.graphics.PathDashPathEffect;  
import android.graphics.PathEffect;  
import android.graphics.SumPathEffect;  
import android.os.Bundle;  
import android.view.View;  
  
public class PathTest extends Activity {  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(new MyView(this));  
    }  
    class MyView extends View  
    {  
        float phase;  
        PathEffect[] effects = new PathEffect[7];  
        int[] colors;  
        private Paint paint;  
        Path path;  
        public MyView(Context context) {  
            super(context);  
            paint = new Paint();  
            paint.setStyle(Paint.Style.STROKE);  
            paint.setStrokeWidth(4);  
            //创建,并初始化Path  
            path = new Path();  
            path.moveTo(0, 0);  
            for(int i = 1; i<= 15; i++)  
            {  
                //生成15个点,随机生成它们的坐标,并将它们连成一条Path  
                path.lineTo(i*20, (float)Math.random()*60);  
            }  
            //初始化七个颜色  
            colors = new int[] {  
                    Color.BLACK,Color.BLUE,Color.CYAN,  
                    Color.GREEN,Color.MAGENTA,Color.RED,Color.YELLOW  
            };  
        }  
        protected void onDraw(Canvas canvas)  
        {  
            //将背景填充成白色  
            canvas.drawColor(Color.WHITE);  
            //-------下面开始初始化7中路径的效果  
            //使用路径效果  
            effects[0] = null;  
            //使用CornerPathEffect路径效果  
            effects[1] = new CornerPathEffect(10);  
            //初始化DiscretePathEffect  
            effects[2] = new DiscretePathEffect(3.0f,5.0f);  
            //初始化DashPathEffect  
            effects[3] = new DashPathEffect(new float[]{20,10,5,10},phase);  
            //初始化PathDashPathEffect  
            Path p = new Path();  
            p.addRect(0, 0, 8, 8, Path.Direction.CCW);  
            effects[4] = new PathDashPathEffect(p,12,phase,PathDashPathEffect.Style.ROTATE);  
            //初始化PathDashPathEffect  
            effects[5] = new ComposePathEffect(effects[2],effects[4]);  
            effects[6] = new SumPathEffect(effects[4],effects[3]);  
            //将画布移到8,8处开始绘制  
            canvas.translate(8, 8);  
            //依次使用7中不同路径效果,7种不同的颜色来绘制路径  
            for(int i = 0; i < effects.length; i++)  
            {  
                paint.setPathEffect(effects[i]);  
                paint.setColor(colors[i]);  
                canvas.drawPath(path, paint);  
                canvas.translate(0, 60);  
            }  
            //改变phase值,形成动画效果  
            phase += 1;  
            invalidate();  
        }  
    }  
}  
效果如下



0
0
查看评论

Android绘图之Paint的使用

首先我们新建类 继承  View  添加4个方法 重写 onDraw  方法 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //实例化 Pai...
  • Jonly_W
  • Jonly_W
  • 2018-01-25 22:26
  • 18

初学Android,图形图像之使用Path类

Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的drawPath(path,paint)即可沿着路径绘制图形 Android还为路径绘制提供了PathEffect来定义绘制效果,PathEffect包含如下子类 ComposePathEf...
  • Nio96
  • Nio96
  • 2014-08-06 16:03
  • 480

Android,图形图像之使用Path类

转载自:http://blog.csdn.net/lee576/article/details/7865121 Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的drawPath(path,paint)即可沿着路径绘制...
  • lv18092081172
  • lv18092081172
  • 2016-07-04 09:17
  • 185

Android图形图像之使用Path类

Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的drawPath(path,paint)即可沿着路径绘制图形 Android还为路径绘制提供了PathEffect来定义绘制效果,PathEffect包含如下子类 ComposePathEf...
  • cx983299475
  • cx983299475
  • 2015-08-21 11:25
  • 180

Android 面试题总结之Android 基础(六)

Android 面试题总结之Android 基础(六) 在上一章节Android 面试题总结之Android 基础ListView(五) 主要是ListView的优化,原理以及一些基本问题。 在阅读过程中有任何问题,请及时联系。如需转载请注明 fuchenxuan de Blog ...
  • vfush
  • vfush
  • 2016-05-30 15:29
  • 7817

Android 面试题总结之Android 基础(二)

Android 面试题总结之Android 基础(二) 上一篇面试总结,主要讲了Activity 和Intent ,这篇主要讲剩下的四大组件,面试中基础较多的就是四大组件,需要了解的知识点也很多。上一篇文章 Android 面试题总结之Android 基础(一) Service Serv...
  • vfush
  • vfush
  • 2016-05-23 15:55
  • 8314

Android|图形图像之Path

待完成
  • l491337898
  • l491337898
  • 2017-03-15 11:34
  • 85

Android 面试题总结之Android 基础(四)

Android 面试题总结之Android 基础Service(四) 在上一章节Android 面试题总结之Android 基础Broadcast Receiver(三) 我们讲了Broadcast Receiver基础知识。本节主要讲解Service相关基础知识,Service也是我们开发过程...
  • vfush
  • vfush
  • 2016-05-26 16:13
  • 8023

Android 面试题总结之Android 基础(五)

Android 面试题总结之Android 基础(ListView)(五) 前几篇面试总结中,主要讲了Android 的四大组件的相关知识点,希望在大家日常工作中有所帮助,那么在本节中主要是Android 必不可少的ListView 的相关知识点。Listview 类似的控件 ,不管是在.Net...
  • vfush
  • vfush
  • 2016-05-24 13:28
  • 4283

Android 面试题总结之Android 进阶(一)

Android 面试题总结之Android 进阶(一) 在前几篇文章中都是讲的基础,大家应该会觉得非常熟悉,但往往我们可能对于基础某些细节认识不够彻底或贯穿不全,我一直认为基础都是比较难的,那么本章节终于到进阶啦,主要讲的是View 的相关知识,在前面《Android 面试题总结之Android...
  • vfush
  • vfush
  • 2016-06-08 16:26
  • 15159
    个人资料
    • 访问:1135108次
    • 积分:18516
    • 等级:
    • 排名:第596名
    • 原创:739篇
    • 转载:316篇
    • 译文:11篇
    • 评论:450条
    联系方式

    我的github



    就职:深信服科技

    QQ:2657607916

    QQ讨论群:346618607

    微信:chenyu_920310

    邮箱:2657607916@qq.com

    最新评论