文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android Studio怎么实现简单绘图板

2023-06-30 14:28

关注

这篇“Android Studio怎么实现简单绘图板”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android Studio怎么实现简单绘图板”文章吧。

目的

设计一个手绘图形的画板

工具及环境

使用java语言,在Android studio平台上进行开发

功能设计

实现一个可以绘图的画板,界面有相关的选择按钮。可以根据按钮切换画笔的颜色,刷子可以加粗画笔的线条大小,橡皮可以用于抹除已经绘制的图案,清屏可实现清屏重置画板

设计思路

首先设计界面,然后设计按钮点击功能。橡皮擦的功能可通过把画笔颜色设置与背景颜色一致来实现,清屏功能可通过背景重置覆盖原背景实现

代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <com.xdw.exercise.HandWrite        android:id="@+id/handwriteview"        android:layout_width="fill_parent"        android:layout_height="600dp" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/red"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="25dp"            android:layout_weight="1"            android:text="红色" />        <Button            android:id="@+id/blue"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="25dp"            android:layout_weight="1"            android:text="蓝色" />        <Button            android:id="@+id/brush"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="25dp"            android:layout_weight="1"            android:text="刷子" />        <Button            android:id="@+id/eraser"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="25dp"            android:layout_weight="1"            android:text="橡皮" />        <Button            android:id="@+id/clear"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="25dp"            android:layout_weight="1"            android:text="清屏" />    </LinearLayout></LinearLayout>

HandWrite.java

package com.xdw.exercise; import android.content.Context;import android.graphics.*;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View; public class HandWrite extends View{    Paint paint = null;    Bitmap originalBitmap = null;    Bitmap new1_Bitmap = null;    Bitmap new2_Bitmap = null;    float startX = 0,startY = 0;    float clickX = 0,clickY = 0;    boolean isMove = true;    boolean isClear = false;    int color=Color.BLUE;    float strokeWidth=10.0f;    public HandWrite(Context context, AttributeSet attrs)    {        super(context, attrs);        originalBitmap = BitmapFactory                .decodeResource(getResources(), R.drawable.iv).copy(Bitmap.Config.ARGB_8888,true);        new1_Bitmap = Bitmap.createBitmap(originalBitmap);    }    public void clear(){        isClear = true;        new2_Bitmap = Bitmap.createBitmap(originalBitmap);        invalidate();    }     public void red(){        isClear=false;        color=Color.RED;    }     public void blue(){        isClear=false;        color=Color.BLUE;    }    public void brush(){        strokeWidth=20.0f;    }    public void eraser(){        color=Color.WHITE;        strokeWidth=80.0f;    }     @Override    protected void onDraw(Canvas canvas)    {        super.onDraw(canvas);        canvas.drawBitmap(HandWriting(new1_Bitmap), 0, 0,null);    }    public Bitmap HandWriting(Bitmap o_Bitmap)    {        Canvas canvas = null;        if(isClear) {        canvas = new Canvas(new2_Bitmap);    }       else{        canvas = new Canvas(o_Bitmap);    }        paint = new Paint();        paint.setStyle(Style.STROKE);        paint.setAntiAlias(true);        paint.setColor(color);        paint.setStrokeWidth(strokeWidth);        if(isMove)        {            canvas.drawLine(startX, startY, clickX, clickY, paint);        }        startX = clickX;        startY = clickY;        if(isClear)        {            return new2_Bitmap;        }        return o_Bitmap;    }      @Override    public boolean onTouchEvent(MotionEvent event)    {        clickX = event.getX();        clickY = event.getY();        if(event.getAction() == MotionEvent.ACTION_DOWN)        {            isMove = false;            invalidate();            return true;        }        else if(event.getAction() == MotionEvent.ACTION_MOVE)        {            isMove = true;            invalidate();            return true;        }        return super.onTouchEvent(event);    }}

MainActivity.java

package com.xdw.exercise; import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button; public class MainActivity extends Activity {    private HandWrite handWrite = null;    Button red,blue,clear,brush,eraser;     @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        handWrite = (HandWrite) findViewById(R.id.handwriteview);        red =(Button)findViewById(R.id.red);        blue=(Button)findViewById(R.id.blue);        clear = (Button) findViewById(R.id.clear);        brush=(Button)findViewById(R.id.brush);        eraser=(Button)findViewById(R.id.eraser);        clear.setOnClickListener(new cClick());        red.setOnClickListener(new rClick());        blue.setOnClickListener(new bClick());        brush.setOnClickListener(new brClick());        eraser.setOnClickListener(new eClick());     }      class cClick implements OnClickListener {        public void onClick(View v) {            handWrite.clear();        }    }    class rClick implements OnClickListener {        public void onClick(View v) {            handWrite.red();        }    }    class bClick implements OnClickListener {        public void onClick(View v) {            handWrite.blue();        }    }    class brClick implements OnClickListener {        public void onClick(View v) {            handWrite.brush();        }    }    class eClick implements OnClickListener {        public void onClick(View v) {            handWrite.eraser();        }    }}

效果显示:

Android Studio怎么实现简单绘图板

以上就是关于“Android Studio怎么实现简单绘图板”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯