文档章节

安卓手机触摸画线

dailei1021
 dailei1021
发布于 2015/10/21 11:42
字数 253
阅读 293
收藏 2

1.  定义 MyPaintView 组件

public class MyPaintView extends View {
    private List<Point> allPoint = new ArrayList<Point>();
    public MyPaintView(Context context, AttributeSet attrs) {
        super(context, attrs);
        super.setBackgroundColor(Color.WHITE);
        super.setOnTouchListener(new OnTouchListenerImp());
    }

    private class OnTouchListenerImp implements OnTouchListener {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //Point类记录当前的X和Y坐标
            Point p = new Point((int)event.getX(),(int)event.getY());
            if(event.getAction() == MotionEvent.ACTION_DOWN) {  //判断抬起
                allPoint = new ArrayList<Point>();  //开始新的记录
                allPoint.add(p);   //记录坐标点
            } else if(event.getAction() == MotionEvent.ACTION_UP) {
                allPoint.add(p);   //记录坐标点
                MyPaintView.this.postInvalidate();  //重绘
            }
                return true;
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {  //进行绘图
        Paint p = new Paint();
        p.setColor(Color.RED);   //设置颜色
        if(allPoint.size()>1) {
            Iterator<Point> iter = allPoint.iterator();
            Point first = null;
            Point last = null;
            while(iter.hasNext()) {    //迭代输出
                if(first == null) {
                    first = (Point) iter.next();
                } else {
                    if(last != null) {
                        first = last;       //修改起始点
                    }
                    last = (Point) iter.next();   //结束点
                    canvas.drawLine(first.x,first.y,last.x,last.y,p);
                }
            }
        }

        super.onDraw(canvas);
    }
}

2.  在activity_main.xml 中要注意,MyPaintView是自定义的,要加入完整的包名

<com.example.administrator.ontouchtest.MyPaintView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/paintView"/>

3.  编写MainActivity

public class MainActivity extends AppCompatActivity {
        private TextView info = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
}


© 著作权归作者所有

共有 人打赏支持
上一篇: 提示框
下一篇: 密码显示
dailei1021
粉丝 3
博文 64
码字总数 23660
作品 0
深圳
程序员
私信 提问
eWeek:谷歌Android急需改进的十点功能

据资讯网站eWeek报道,随着微软发布Windows Phone 7 Series操作系统,智能手机领域的竞争变得愈发激烈。本周,eWeek网站撰文列举出谷歌旗下的Android OS还应向iPhone和WPhone学习的十个方面:...

红薯
2010/02/26
618
2
android平台下视频编辑

【业务需求】 一、功能需求 : 进入一个界面... 界面正中心是一个播放器,用于播放网络视频. 界面右边有一条工具栏,内有直线,圆圈,矩形,撤销,清除,颜色.在不做选择的情况下触摸播放器则在播放器...

zb1480676769363
2016/12/02
3
0
android中,记录画笔轨迹,点击播放可以自动把线画出来

各位大神们,我最近正在做android画图类项目,有一个难点,手指在屏幕上画线,画完后清除屏幕,点击播放按钮,手机自动按照原来轨迹再画一遍。真是很头疼啊,希望各位大神支个招吧,小弟不胜...

八爷
2014/01/24
3K
3
android Configuration系统设置

Configuration类是专门用来描述手机设备上的配置信息。这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。 程序中可调用Activity的如下方法来获取Configuration对象 //获取系统的...

张林思密达
2015/08/19
0
0
技术控解释为什么Android没有iOS那么顺滑

虽然很多Android手机的配置都比iPhone要高,比如大多数Andorid手机的内存都有1GB,而iPhone 4S只有512MB内存,但用过iPhone的人都知道Android手机在使用的时候总感觉没有那么顺滑,究竟为什么...

虫虫
2011/12/07
5.8K
48

没有更多内容

加载失败,请刷新页面

加载更多

开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
11
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
7
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
4
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0
RabbitMQ学习(2)

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时,首先......

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部