`
miluroe
  • 浏览: 4236 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

自定义组件实现Android简易画板

阅读更多


        实现画板功能可通过现有的ImageView组件,也可以通过自定义DrawingView组件,添加新的画板功能。二组件都继承android.view.View类。


        一:DrawingView程序部分:
        (1)继承View类,重写构造方法。在传入参数Context、AttributeSet的方法中新建画笔对象paint。
        (2)重写onDraw(android.graphics.Canvas)方法:

             public void onDraw(Canvas canvas) {

                 super.onDraw(canvas);

                //如果bitmap没有被创建,初始化一个bitmap。

                if (bitmap == null) {

                    bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(),

                    Config.ARGB_8888);//设置大小为屏幕大小,颜色为32位色。

                    this.canvas = new Canvas(bitmap);//创建画布为缓冲绘图区bitmap。

                    this.canvas.drawColor(Color.CYAN);//将画布的颜色填充为青色。

                }

                // 将bitmap对象绘制到DrawingView界面上。参数二指源区域,参数三指目标区域,用于贴图。

                canvas.drawBitmap(bitmap, 0, 0, paint);

                (在使用ImageView组建画图时,需要imageview.setImageBitmap(bitmap);将缓冲区图片设置到imageview上)

            }

        (3)重写View的触控事件。

                //该方法返回布尔值,应在绘图后返回ture表示事件已被成功处理。

                public boolean onTouchEvent(MotionEvent event) {

                //对事件进行分类处理。

                switch (event.getAction()) {

                case MotionEvent.ACTION_DOWN://按下触控板

                    x1 = event.getX();

                    y1 = event.getY();

                break;

                case MotionEvent.ACTION_UP://离开触控板

                        //判断当前功能并绘制相应图形。

                        (String进行比较时,if string.equals("...");表示比较String的值相等。

                        而if(StringA=="...");则二者的值和地址都需要相等才能返回真。)

                    if (shape.equals("直线")) {

                        x2 = event.getX();

                        y2 = event.getY();

                        canvas.drawLine(x1, y1, x2, y2, paint);

                        }

                    if(shape.equals("矩形")){

                        x2 = event.getX();

                        y2 = event.getY();

                        canvas.drawRect(x1, y1, x2, y2, paint);

                        }

                    break;

                case MotionEvent.ACTION_MOVE:

                    if (shape.equals("曲线")) {

                        x2 = event.getX();

                        y2 = event.getY();

                        canvas.drawLine(x1, y1, x2, y2, paint);

                        x1 = x2;

                        y1 = y2;

                    }

                    break;

                }

                //................

                //重绘

                this.invalidate();

                (invalidate();会通知区域无效,排队等待消息后重绘,若加入this.Update()则立即重绘,强调同步);

                return true;

            }

        } 

 

        二:main.xml菜单编辑部分:

        <item>添加选项,同类选项之间被添加在同一<menu>下。

        (.xml文件形式以<类型名>......</类型名>完成一次嵌套并结束。这里不应使用中文命名。)

        <menu xmlns:android="http://schemas.android.com/apk/res/android" >

        <!--表示进入菜单时的第一阶目录。其中有Color选单-->

             <item android:id="@+id/color" android:title="@string/color">

                 <menu>

                    <!--Color选单下的内容,包含了四种颜色选择-->

                    <group android:checkableBehavior="single" android:enabled="true">

                        <item android:id="@+id/red" android:title="@string/Red"/>

                        <item android:id="@+id/yellow" android:title="@string/Yellow"/>

                        <item android:id="@+id/blue" android:title="@string/Blue"/>

                        <item android:id="@+id/black" android:title="@string/Black"/>

                   </group>

                </menu>

            </item>

        以此方法建立工具选单,画笔粗细选单。

 

        三:strings.xml菜单标题对照部分:

               <string name="color">颜色选择</string>

               <string name="Red">红色</string>

               <string name="Yellow">黄色</string>

               <string name="Blue">蓝色</string>

               <string name="Black">黑色</string>

               在执行应用时将菜单中的标题改换成中文。

         以此方法建立工具选单,画笔粗细选单的标题对照。

 

        四:MainActivity.java部分:

        (1)实例化一个DrawingView对象dv;

        (2)在onCreate(Bundle savedInstanceState)方法中获取绘制图形组件对象:

                dv = (DrawingView)this.findViewById(R.id.drawingView1);//通过地址访问。

        (3)添加菜单的方法

        public boolean onCreateOptionsMenu(Menu menu) {

            getMenuInflater().inflate(R.menu.main, menu);

            return true;

        }

        (4)添加菜单功能选择的方法

        public boolean onOptionsItemSelected(MenuItem item) {

             //将菜单中选项组建的Title转型成String

            String MenuName = item.getTitle().toString();

            //选择功能

            //直线

            if(MenuName.equals("直线")){

                dv.shape = "直线";

            }

            ......其余以此为例。

            //选择颜色

            //红色

            if(MenuName.equals("红色")){

                dv.paint.setColor(Color.RED);(访问格式:对象.属性.方法;)

            }

            ......其余以此为例。

            //选择画笔粗细

            //3像素宽度

            if(MenuName.equals("3dp")){

                dv.paint.setStrokeWidth(3);

            }

            (在创建item组件时,不能以数字开头命名,故创建时可命名为Dp3。)

            ......其余以此为例。

            return true;

        }

 

        简易画板效果预览:



 

 

 

 

  • 大小: 36.6 KB
分享到:
评论

相关推荐

    Android简易画板PaintOnTouchEvent

    综上所述,"Android简易画板PaintOnTouchEvent"项目涵盖了自定义View、触摸事件处理、Canvas与Paint的使用、菜单选项实现、性能优化等多个Android开发的关键知识点。通过学习和实践这些内容,开发者可以创建出具有...

    Android简易画板源码

    在Android开发中,创建一个简易画板应用是一个常见的练习,它可以帮助开发者深入理解自定义View的概念和绘图机制。这个源码项目就是基于这样的目的,使用了Android的自定义View来构建一个基本的画板功能,让用户可以...

    Android 短代码实现 最简易的画板

    为了实现画板功能,我们需要创建一个新的自定义View子类。例如,我们可以创建一个名为`MyCanvas`的类,继承自`View`。 2. **onDraw()方法**: 这是绘制图形的核心方法。在`MyCanvas`类中,我们需要重写`onDraw()`...

    android自定义画板

    本文将深入探讨如何在Android平台上创建一个自定义画板,并实现手势画图涂鸦功能。 首先,我们需要创建一个新的Android项目,并添加必要的布局文件。在布局XML文件中,我们通常会包含一个`SurfaceView`作为画板的...

    【原创】Android自定义View实现图片显示并能缩放、拖拽、切换

    在Android开发中,自定义View是...理解并掌握自定义View的原理和实现方法,是成为一名出色的Android开发者不可或缺的一部分。通过不断实践和学习,你将能够创建出更加复杂、功能强大的自定义组件,提升应用的用户体验。

    几何画板自定义工具包-800多个小工具

    在几何画板中,自定义工具是用户或开发者根据需求创建的特殊工具,它们可以是一系列预设的动作序列,比如绘制特定形状、执行特定计算或者实现特定交互。这些工具通常无法在标准工具栏中找到,但通过导入自定义工具...

    Android 实现画板功能

    在Android平台上实现一个画板功能是一项常见的需求,尤其在儿童教育、绘画应用或者创意设计类应用中。这个项目,名为"android-palette-master",显然提供了这样一个功能丰富的画板实现。下面将详细介绍其中的关键...

    几何画板加自定义工具包.zip

    《几何画板与自定义工具包的深度解析》 几何画板是一款强大的数学绘图工具,深受广大数学教师和学生喜爱。它以其直观易用、功能丰富的特点,为数学教学和学习提供了极大的便利。在“几何画板加自定义工具包.zip”这...

    一个简易画板的实现 VS2010 QT4.8做的 C++

    一个简易画板的实现 有简单的画图,画图形,改颜色功能

    Android自定义SurfaceView——实现画板功能

    本示例中的“Android自定义SurfaceView——实现画板功能”旨在教你如何利用`SurfaceView`创建一个可以画画的应用。`SurfaceView`是Android系统提供的一种用于高效显示动态图像的视图组件,它拥有自己的渲染线程,...

    几何画板自定义工具包.zip

    几何画板重要工具包,提供便捷的几何画板工具,随心所欲地创造几何图形。 工具包括:线工具、角工具、三角形、四边形、正多边形、圆工具、新新坐标系、迷你坐标系、经典坐标系、函数工具、箭头工具、圆锥曲线A、圆锥...

    android之简易绘图板

    在Android平台上,开发一个简易的绘图板是一个常见的需求,特别是在构建教育、创意或娱乐类应用时。这个“android之简易绘图板”项目显然旨在提供一个基础的绘画功能,让用户能够在屏幕上自由绘制图形和线条。然而,...

    android自定义View画板

    本主题将深入探讨如何在Android中实现一个自定义的画板(View)。我们将讨论核心概念、步骤以及关键代码片段,以帮助你理解如何在Android应用中创建一个可以让用户自由绘画的自定义View。 1. **自定义View的基础** ...

    android实现画板功能

    该资源包含了使用android实现的一个简单的画板以及结合xfermode实现遮罩层画板效果。具体实现,可以参考博客http://blog.csdn.net/mockingbirds/article/details/49455421

    简易画板MyPPT可实现简易图形绘制

    《简易画板MyPPT:实现简易图形绘制的创新工具》 在计算机应用领域,图形绘制工具是不可或缺的一部分,它们帮助用户快速、直观地表达思想和创意。"简易画板MyPPT"就是这样一款专为用户提供简单图形绘制功能的软件。...

    Android 画板(白板)源码 涂鸦 画图 图画

    - 自定义控件:可能包含自定义的`View`或`SurfaceView`来实现画板功能。 7. **状态保存与恢复**: - 为了在用户离开应用后仍能保留画布状态,可以将当前的`Bitmap`和绘图参数序列化存储,重新打开应用时恢复。 8...

    android 签名画板 , 可以自定义画笔

    android 签名画板 , 可以自定义画笔 , 类似于银行签名确认,使用简单,可以保存当前画板数据

    C# 2010 简易画板

    【C# 2010 简易画板】是一个基于C# 2010编程语言开发的简易画图应用程序。这个程序为用户提供了一个简单的画板界面,允许用户进行基本的绘画操作,比如绘制直线、曲线、矩形、椭圆等图形,并能进行颜色选择、画笔...

    自定义view-画板

    本文将深入探讨“自定义view-画板”这一主题,它是一个用于实现类似“你画我猜”游戏功能的画笔组件。这个组件由三个自定义View构成,每个View都有其特定的功能和作用。 首先,我们来看第一个自定义View,它通常...

    Android 图画板Demo

    总的来说,"Android 图画板Demo"涵盖了Android开发中的触摸事件处理、自定义View、数据结构使用(如栈和队列)、图像操作(如Bitmap和Canvas)以及用户界面设计等多个方面,是学习Android应用开发的一个很好的实践...

Global site tag (gtag.js) - Google Analytics