iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 开发实例简单涂鸦板
  • 212
分享到

Android 开发实例简单涂鸦板

Android 2022-06-06 07:06:54 212人浏览 独家记忆
摘要

       在Android上开发一些小应用既可以积累知识又可以增加乐趣,与任务式开发不同,所以想到在Androi

       在Android开发一些小应用既可以积累知识又可以增加乐趣,与任务式开发不同,所以想到在Android系统上实现一个简单的涂鸦板,这是我们练手的一种好的方法。

       涂鸦板应用的代码实现

       新建工程MyWall,修改/res/layout/main.xml文件,在里面添加一个SurfaceView和两个Button,用到了RelativeLayout布局,完整的main.xml文件如下:

XML/html代码


<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="Http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
> 
<SurfaceView 
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/line"
android:layout_alignParentTop="true"
/>
<LinearLayout
android:id="@+id/line"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
>
<Button
android:id="@+id/flushbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="清屏"
/>
<Button
android:id="@+id/colorbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" 
android:text="颜色"
/>
</LinearLayout>
</RelativeLayout> 

       接着,修改MyWallActivity.java文件,最主要是重写了onTouchEvent()函数,在这个函数里过滤出触屏拖动事件,然后获取其相应的坐标和画线。完整的内容如下:

Java代码


package com.nan.wall;   
import android.app.Activity;   
import android.app.AlertDialog;   
import android.app.Dialog;   
import android.content.DialogInterface;   
import android.graphics.canvas;   
import android.graphics.Color;   
import android.graphics.Paint;   
import android.graphics.Rect;   
import android.os.Bundle;   
import android.view.MotionEvent;   
import android.view.SurfaceHolder;    
import android.view.SurfaceView;   
import android.view.View;    
import android.widget.Button;    
public class MyWallActivity extends Activity    
{    
private SurfaceView mSurfaceView = null;    
private SurfaceHolder mSurfaceHolder = null;    
private Button cleanButton = null;    
private Button colorButton = null;    
private float oldX = 0f;    
private float oldY = 0f;    
private boolean canDraw = false;   
private Paint mPaint = null;   
//用来记录当前是哪一种颜色    
private int whichColor = 0;    
   
  @Override    
public void onCreate(Bundle savedInstanceState)    
{    
super.onCreate(savedInstanceState);   
setContentView(R.layout.main);   
mSurfaceView = (SurfaceView)this.findViewById(R.id.surfaceview);   
mSurfaceHolder = mSurfaceView.getHolder();   
mPaint = new Paint();    
//画笔的颜色    
mPaint.setColor(Color.RED);    
//画笔的粗细    
mPaint.setStrokeWidth(2.0f);   
cleanButton = (Button)this.findViewById(R.id.flushbutton);    
//按钮监听    
cleanButton.setOnClickListener(new View.OnClickListener()    
{    
@Override    
public void onClick(View v)    
{    
// TODO Auto-generated method stub    
//定整个SurfaceView    
Canvas mCanvas = mSurfaceHolder.lockCanvas();    
mCanvas.drawColor(Color.BLACK);    
//绘制完成,提交修改   
mSurfaceHolder.unlockCanvasAndPost(mCanvas);    
//重新锁一次    
mSurfaceHolder.lockCanvas(new Rect(0, 0, 0, 0));    
mSurfaceHolder.unlockCanvasAndPost(mCanvas);    
}   
});     
colorButton = (Button)this.findViewById(R.id.colorbutton);   
//按钮监听    
colorButton.setOnClickListener(new View.OnClickListener()    
{    
@Override    
public void onClick(View v)    
{    
 // TODO Auto-generated method stub   
Dialog mDialog = new AlertDialog.Builder(MyWallActivity.this)    
.setTitle("颜色设置")    
.setSingleChoiceItems(new String[]{"红色","绿色","蓝色"}, whichColor, new DialogInterface.OnClickListener()    
{    
@Override   
public void onClick(DialogInterface dialog, int which)    
{    
 // TODO Auto-generated method stub    
switch(which)    
{    
case 0:    
{    
//画笔的颜色    
mPaint.setColor(Color.RED);    
whichColor = 0;    
break;    
}    
case 1:    
{    
//画笔的颜色   
mPaint.setColor(Color.GREEN);   
whichColor = 1;   
break;   
}   
case 2:   
{   
//画笔的颜色106                 
mPaint.setColor(Color.BLUE);   
whichColor = 2;                 
break;                 
}   
}   
}   
})   
.setPositiveButton("确定", new DialogInterface.OnClickListener()   
{   
@Override   
public void onClick(DialogInterface dialog, int which)    
{   
// TODO Auto-generated method stub   
dialog.dismiss();   
}   
})   
.create();   
mDialog.show();   
}   
});   
@Override   
public boolean onTouchEvent(MotionEvent event)   
{      
//获取x坐标   
float x = event.getX();   
//获取y坐标(不知道为什么要减去一个偏移值才对得准屏幕)   
float y = event.getY()-50;   
//第一次进来先不管   
if(canDraw)   
{      
//获取触屏事件   
switch(event.getAction())   
{   
//如果是拖动事件   
case MotionEvent.ACTION_MOVE:   
{   
//锁定整个SurfaceView   
Canvas mCanvas = mSurfaceHolder.lockCanvas();     
mCanvas.drawLine(x, y, oldX, oldY, mPaint);   
mSurfaceHolder.unlockCanvasAndPost(mCanvas);   
//重新锁一次   
mSurfaceHolder.lockCanvas(new Rect(0, 0, 0, 0));   
mSurfaceHolder.unlockCanvasAndPost(mCanvas);   
break;   
}   
}   
}   
//保存目前的x坐标值   
oldX = x;   
//保存目前的y坐标值   
oldY = y;   
canDraw = true;   
return true;   
}   
}   

应用测试

       在模拟器上运行此应用是如下效果:

       在Android手机上运行效果则是这样的:

 

       字写的有点丑,但是功能实现了。在获取了Y坐标后减去一个偏移值50,这个值是猜出来的,没想到在模拟器和真机上定位得都还蛮准的。

       应用比较简易,但是大家可以在此基础上丰富它的功能,使其成为一个像样的Android应用。

       以上就是Android 简单涂鸦板的简单示例,后续继续整理相关资料,谢谢大家对本站的支持!

您可能感兴趣的文章:Android编程实现在Bitmap上涂鸦效果Android 使用Path实现涂鸦功能Android实现Path平滑的涂鸦效果实例android实现简单的画画板实例代码Android采用双缓冲技术实现画板Android自定义SurfaceView实现画板功能Android实现画板、写字板功能(附源码下载)Android多媒体之画画板开发案例分享双缓冲技术实现Android 画板应用Android画画板的制作方法Android编程实现的手写板和涂鸦功能


--结束END--

本文标题: Android 开发实例简单涂鸦板

本文链接: https://www.lsjlt.com/news/24214.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现Path平滑的涂鸦效果实例
    前言在最近的一个项目中做了一个涂鸦的效果,手指快速移动,会出现折线,这篇文章记录笔触优化。下面话不多说了,来一起看看详细的介绍吧。优化前优化设计到的类:Paint,PathPath类记录了坐标点集合决定线条轨迹,Paint决定怎么画Pain...
    99+
    2023-05-30
    android path平滑 涂鸦
  • android蓝牙简单开发示例教程
    目录概述1、权限申请2、打开蓝牙3、接收蓝牙状态的改变4、扫描其他的设备5、蓝牙配对6、获取已经配对的设备7、连接设备概述 前段时间学习了一些蓝牙开发的知识,记录一下Android中...
    99+
    2024-04-02
  • Android开发中ProgressDialog简单用法示例
    本文实例讲述了Android开发中ProgressDialog简单用法。分享给大家供大家参考,具体如下:网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下:建立andro...
    99+
    2023-05-30
    android progressdialog gr
  • Android Studio实现简单绘图板
    本文实例为大家分享了Android Studio实现简单绘图板的具体代码,供大家参考,具体内容如下 目的 设计一个手绘图形的画板 工具及环境 使用java语言,在Android st...
    99+
    2024-04-02
  • android开发实践之ndk编译命令简单示例
    前言Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加...
    99+
    2023-05-31
    android ndk编译 命令
  • Android Studio实现简单计算器开发
    本文实例为大家分享了Android Studio实现简单计算器开的具体代码,供大家参考,具体内容如下 效果展示: 路径和文件: AndroidManifest.xml <...
    99+
    2024-04-02
  • Android开发简单计算器实现代码
    计算器项目,要求实现加、减、乘、除、求倒数、求平方根等简单运算。 真机调试结果如下图: 布局文件:main_activity.xml <?xml version=...
    99+
    2024-04-02
  • Android开发实现简单计算器功能
    计算器项目,要求实现加、减、乘、除、求倒数、求平方根等简单运算。 真机调试结果如下图: 布局文件:main_activity.xml <?xml version=...
    99+
    2024-04-02
  • Android开发基础实现最简单的视频播放示例
    目录正篇使用方法最终效果展示总结正篇 视频播放是很平常的一件事情,但如何在APP中实现呢,其实蛮简单的,方法也很多,但作为基础的就是使用VideoView了,下面我们来看看如何使...
    99+
    2023-02-05
    Android开发简单视频播放 Android 视频播放
  • Android开发实现的简单媒体播放器功能示例
    本文实例讲述了Android开发实现的简单媒体播放器功能。分享给大家供大家参考,具体如下:一、概述:因为播放视频需要很大的内存,所以必须使用surfaceview ,surfaceview 里实现了双缓冲的功能,二、全部代码:public ...
    99+
    2023-05-30
    android 播放器 roi
  • Android Studio怎么实现简单绘图板
    这篇“Android Studio怎么实现简单绘图板”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android&...
    99+
    2023-06-30
  • Android中Progress的简单实例
    Android中Progress的简单实例Android中Progress网上的demo都是瞎扯淡,当然,你们也可以认为我的demo是瞎扯淡,因为,毕竟要理解别人的思路,很头疼,主要还是知道思路,然后一步一步慢慢来。今天我讲的是Progre...
    99+
    2023-05-31
    android progress gr
  • Android面向单Activity开发实例分析
    这篇“Android面向单Activity开发实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android面向单Ac...
    99+
    2023-07-05
  • Android Studio开发实现简单计算器功能
    本文实例为大家分享了Android Studio开发实现简单计算器的具体代码,供大家参考,具体内容如下 代码: activity_3.xml <xml version="1.0...
    99+
    2024-04-02
  • android简单小游戏怎么开发
    要开发一个简单的Android小游戏,可以按照以下步骤进行:1. 安装Android Studio:Android Studio是G...
    99+
    2023-10-21
    android
  • Android开发简单实现摇动动画的方法
    本文实例讲述了Android开发简单实现摇动动画的方法。分享给大家供大家参考,具体如下:先创建shake.xml<?xml version="1.0" encoding="utf-8"?><translat...
    99+
    2023-05-30
    android 动画 画的
  • Node.js开发指南中的简单实例(mysql版)
    言归正传:1.为什么会想写这篇文章?答:因为在看这本书的过程中,因为nodejs版本升级后用法跟书中不同了。另外因为nodejs这东西真的不错,值得学习。2.我的例子与书中例子的区别...
    99+
    2022-11-15
    Node.js 开发指南 mysql
  • android音乐播放简单实现的简单示例(MediaPlayer)
    利用MediaPlayer完成一个最简单的音乐播放。这个基本的控制掌握后,可直接利用为背景乐的控制。为了能够实现播放,在界面方面,我们需要三个控制按钮,分别是:Play(播放)、Pause(暂停)、Stop(停止)请看activity_ma...
    99+
    2023-05-30
    android 音乐 播放
  • Android中SharedPreference详解及简单实例
     Android中SharedPreference详解   SharedPreference是Android提供的一种轻量级的数据存储方式,主要用来存储一些简单的配置信息,例如,默认欢迎语,登录用户名和密码等。...
    99+
    2023-05-30
    android sharedpreference roi
  • android studio的Handler简单实例代码
    实现:EditText输入消息,通过按钮选择发送给主线程或者子线程; 以下有效果图、MainActivity.java代码和activity_main.xml代码 效果图: Mai...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作