android图像涂鸦,Android Studio设计一个能在图片上面涂鸦的程序
一、内容
设计两种形式的对话框程序,一种是发出提示信息的普通对话框,另一种是用户登录对话框。
二、实现
1.主界面 activity_main.xml
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
android:id="@+id/handwriteview"
android:layout_height="380dp"
android:layout_width="380dp"
tools:ignore="MissingConstraints" />
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_horizontal">
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/clear"
android:text="清屏"/>
2.主控制程序 MainActivity.java
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
HandWrite handWrite = null;
Button clear = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handWrite=(HandWrite)findViewById(R.id.handwriteview);
clear=(Button)findViewById(R.id.clear);
clear.setOnClickListener(new mClick());
}
class mClick implements View.OnClickListener{
@Override
public void onClick(View v) {
handWrite.clear();
}
}
}
3.HandWrite.java 的代码
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
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.YELLOW;
float strokeWidth = 2.0f;
public HandWrite(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
originalBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.cy).copy(Bitmap.Config.ARGB_8888,true);
new1_Bitmap = Bitmap.createBitmap(originalBitmap);
}
public void clear(){
isClear = true;
new2_Bitmap = Bitmap.createBitmap(originalBitmap);
invalidate();
}
public void setstyle(float strokeWidth){
this.strokeWidth = strokeWidth;
}
@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(Paint.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);
}
}
android图像涂鸦,Android Studio设计一个能在图片上面涂鸦的程序相关推荐
- Android作业:设计一个能在图片上涂鸦的程序
一.内容 设计一个能在图片上涂鸦的程序 二.实现 activity_main.xml MainActivity.java HandWrite.java
- 设计一个魔方(六面)的程序 【微软面试100题 第四十四题】
题目要求: 设计一个魔方(六面)的程序. 题目分析: 把魔方从正面看展开成一个平面,如图1所看到的. 设计一个类.当中Spacexy[SPACE][LEN][LEN];中的SPACE为0~5表示六个面 ...
- c语言设计一个按时间片轮转法实现处理器调度的程序,设计一个按时间片轮转法实现处理器调度的程序...
实验一处理器调度 一.实习内容 选择一个调度算法,实现处理器调度. : 二.实习目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态.当就绪进程个数大于处理器数时,就必须依照某种策略来决 ...
- 【操作系统】实验 设计一个按优先权调度算法实现处理器调度的程序
实验要求 设计一个按优先权调度算法实现处理器调度的程序. [提示] (1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: 其中, 进程名--作为进程的标识,假设五个进 ...
- Android studio设计一个简易微信界面
一.设计要求及实现构想 1.设计一个简易微信界面框架,包含至少4个tab页面(我设计的4个分别为message.contact.find.config),要求能实现四个页面之间的点击切换. 2.首先分 ...
- 用Android Studio设计一个简单个性的登录界面
一.用到的组件: LinearLaout.TableLayout.FrameLayout.RelativeLout 二.效果图展示: 三.步骤及过程: 1.首先新建一个Project,并在app -& ...
- Android:设计一个在屏幕上移动的小球程序
目录 1.要求 2.结构 3.设计步骤 4.实现效果 1.要求 设计一个自定义组件继承于Android.view.View的图形绘制类TestView,在该视图组件中绘制一个小球:再设计一个实现监听触 ...
- 【Android】Android studio做一个简单的图片浏览器
我们现在布局文件中定义一个简单的线性布局容器,代码如下 activity_main.xml <?xml version="1.0" encoding="utf-8& ...
- android图像边缘检测,Android图像处理系统1.4图像的锐化-边缘检测
Android图像处理系统1.4图像的锐化-边缘检测 图像的锐化-边缘检测:(Robert Gradient.Sobel Gradient.Laplace Gradient) @author:郑海波 ...
最新文章
- 《裂变》作者爆料:欺世盗名者绝非唐骏一人
- Dubbo:Spring Cloud 服务调用的新选择
- 把企业分“三只鸟”的发展好比“三个策略”
- PHP对请求时间范围条件的判断
- java ftp主动模式和被动模式_ftp主动模式和被动模式
- python【进阶】5.一等函数(注销)
- How to remove replication in SyteLine V2
- MPEG-2TS码流编辑的原理及其应用(转载
- mybatisplus 一次性执行多条SQL语句
- python中的基本数据结构
- tia v15 添加项目_硬技能,TIA 博途软件界面的介绍
- 没有绝对的技术,只有不停的创新
- 如何明智的使用计算机,幼儿园如何正确使用计算机
- POJ 2010 Moo University - Financial Aid【堆的应用】
- A - Divisors POJ - 2992 (组合数C的因子数)数学—大数
- 易语言 word类excel类 的 源码和模块
- Java中HttpURLConnection使用代理服务器
- 安卓和win环境下扫描局域网下设备IP的工具
- MySQL 8.0.17的安装与图形管理软件介绍
- PAT 乙级 1002 写出这个数
热门文章
- 陶泓达:3.22外汇黄金欧盘最新行情走势分析,原油精准操作布局
- 虹软开发心得---多线程实战开发避坑分享(C#)
- 社保局招聘笔试计算机考试考什么,中国邮政储蓄银行社会招聘笔试内容是什么?...
- 产品经理的年度KPI
- python tkinter做的生成计算题的GUI
- 电脑录屏怎么录ppt?三个ppt录制视频的方法
- 禁止服务器的协议,电脑怎么阻止Internet控制消息协议ICMP?
- matlab图像处理常见函数及用法详解
- Windows 7 中放大镜的使用方法和快捷键
- 迅雷(7.2.11.3788)软件在Win8专业版中启动崩溃的解决办法