一、内容

设计两种形式的对话框程序,一种是发出提示信息的普通对话框,另一种是用户登录对话框。

二、实现

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设计一个能在图片上面涂鸦的程序相关推荐

  1. Android作业:设计一个能在图片上涂鸦的程序

    一.内容 设计一个能在图片上涂鸦的程序 二.实现 activity_main.xml MainActivity.java HandWrite.java

  2. 设计一个魔方(六面)的程序 【微软面试100题 第四十四题】

    题目要求: 设计一个魔方(六面)的程序. 题目分析: 把魔方从正面看展开成一个平面,如图1所看到的. 设计一个类.当中Spacexy[SPACE][LEN][LEN];中的SPACE为0~5表示六个面 ...

  3. c语言设计一个按时间片轮转法实现处理器调度的程序,设计一个按时间片轮转法实现处理器调度的程序...

    实验一处理器调度 一.实习内容 选择一个调度算法,实现处理器调度. : 二.实习目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态.当就绪进程个数大于处理器数时,就必须依照某种策略来决 ...

  4. 【操作系统】实验 设计一个按优先权调度算法实现处理器调度的程序

    实验要求 设计一个按优先权调度算法实现处理器调度的程序. [提示] (1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: 其中, 进程名--作为进程的标识,假设五个进 ...

  5. Android studio设计一个简易微信界面

    一.设计要求及实现构想 1.设计一个简易微信界面框架,包含至少4个tab页面(我设计的4个分别为message.contact.find.config),要求能实现四个页面之间的点击切换. 2.首先分 ...

  6. 用Android Studio设计一个简单个性的登录界面

    一.用到的组件: LinearLaout.TableLayout.FrameLayout.RelativeLout 二.效果图展示: 三.步骤及过程: 1.首先新建一个Project,并在app -& ...

  7. Android:设计一个在屏幕上移动的小球程序

    目录 1.要求 2.结构 3.设计步骤 4.实现效果 1.要求 设计一个自定义组件继承于Android.view.View的图形绘制类TestView,在该视图组件中绘制一个小球:再设计一个实现监听触 ...

  8. 【Android】Android studio做一个简单的图片浏览器

    我们现在布局文件中定义一个简单的线性布局容器,代码如下 activity_main.xml <?xml version="1.0" encoding="utf-8& ...

  9. android图像边缘检测,Android图像处理系统1.4图像的锐化-边缘检测

    Android图像处理系统1.4图像的锐化-边缘检测 图像的锐化-边缘检测:(Robert Gradient.Sobel Gradient.Laplace Gradient) @author:郑海波 ...

最新文章

  1. 《裂变》作者爆料:欺世盗名者绝非唐骏一人
  2. Dubbo:Spring Cloud 服务调用的新选择
  3. 把企业分“三只鸟”的发展好比“三个策略”
  4. PHP对请求时间范围条件的判断
  5. java ftp主动模式和被动模式_ftp主动模式和被动模式
  6. python【进阶】5.一等函数(注销)
  7. How to remove replication in SyteLine V2
  8. MPEG-2TS码流编辑的原理及其应用(转载
  9. mybatisplus 一次性执行多条SQL语句
  10. python中的基本数据结构
  11. tia v15 添加项目_硬技能,TIA 博途软件界面的介绍
  12. 没有绝对的技术,只有不停的创新
  13. 如何明智的使用计算机,幼儿园如何正确使用计算机
  14. POJ 2010 Moo University - Financial Aid【堆的应用】
  15. A - Divisors POJ - 2992 (组合数C的因子数)数学—大数
  16. 易语言 word类excel类 的 源码和模块
  17. Java中HttpURLConnection使用代理服务器
  18. 安卓和win环境下扫描局域网下设备IP的工具
  19. MySQL 8.0.17的安装与图形管理软件介绍
  20. PAT 乙级 1002 写出这个数

热门文章

  1. 陶泓达:3.22外汇黄金欧盘最新行情走势分析,原油精准操作布局
  2. 虹软开发心得---多线程实战开发避坑分享(C#)
  3. 社保局招聘笔试计算机考试考什么,中国邮政储蓄银行社会招聘笔试内容是什么?...
  4. 产品经理的年度KPI
  5. python tkinter做的生成计算题的GUI
  6. 电脑录屏怎么录ppt?三个ppt录制视频的方法
  7. 禁止服务器的协议,电脑怎么阻止Internet控制消息协议ICMP?
  8. matlab图像处理常见函数及用法详解
  9. Windows 7 中放大镜的使用方法和快捷键
  10. 迅雷(7.2.11.3788)软件在Win8专业版中启动崩溃的解决办法