android_65_简易画画板
来源:互联网 发布:淘宝禁止出售兴奋剂 编辑:程序博客网 时间:2024/04/28 03:12
效果:
清单:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sg31.draw" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> // 注意权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.sg31.draw.MainActivity" > <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /><LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentBottom="true" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="红色" android:onClick="redColorBtnClicked" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="绿色" android:onClick="greenColorBtnClicked" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="刷子" android:onClick="brushBtnClicked" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" android:onClick="savePicBtnClicked" /></LinearLayout> </RelativeLayout>
代码:
package com.sg31.draw;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.text.SimpleDateFormat;import java.util.Date;import android.support.v7.app.ActionBarActivity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private ImageView iv;int startX;int startY;private Canvas canvas;private Paint paint;private Bitmap bmCopy;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 加载画画板的背景图Bitmap bmSrc = BitmapFactory.decodeResource(getResources(),R.drawable.bg);bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(),bmSrc.getConfig());paint = new Paint();canvas = new Canvas(bmCopy);// 绘制canvas.drawBitmap(bmSrc, new Matrix(), paint);iv = (ImageView) findViewById(R.id.iv);iv.setImageBitmap(bmCopy);// 设置触摸侦听iv.setOnTouchListener(new OnTouchListener() {// 触摸屏幕时,触摸事件产生时,此方法调用@Overridepublic boolean onTouch(View v, MotionEvent event) {int action = event.getAction();switch (action) {// 用户手指摸到屏幕case MotionEvent.ACTION_DOWN:startX = (int) event.getX();startY = (int) event.getY();break;// 用户手指正在滑动case MotionEvent.ACTION_MOVE:int x = (int) event.getX();int y = (int) event.getY();canvas.drawLine(startX, startY, x, y, paint);// 每次绘制完毕之后,本次绘制的结束坐标变成下一次绘制的初始坐标startX = x;startY = y;iv.setImageBitmap(bmCopy);break;// 用户手指离开屏幕case MotionEvent.ACTION_UP:break;}// true:告诉系统,这个触摸事件由我来处理// false:告诉系统,这个触摸事件我不处理,这时系统会把触摸事件传递给imageview的父节点return true;}});}public void redColorBtnClicked(View v) {paint.setColor(Color.RED);}public void greenColorBtnClicked(View v) {paint.setColor(Color.GREEN);}public void brushBtnClicked(View v) {paint.setStrokeWidth(7);}public void savePicBtnClicked(View v) {File file = new File("sdcard/"+tool_currentDateTime()+".png");FileOutputStream fos = null;try {fos = new FileOutputStream(file);} catch (FileNotFoundException e) {e.printStackTrace();}bmCopy.compress(CompressFormat.PNG, 100, fos);// 发送sd卡就绪广播,重新装载和扫描sd卡内的文件Intent intent = new Intent();// ACTION_MEDIA_SCANNER_SCAN_FILE.// ACTION_MEDIA_MOUNTED// MediaScannerConnection intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));sendBroadcast(intent);}public String tool_currentDateTime(){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.out.println(df.format(new Date()));// new Date()为获取当前系统时间return df.format(new Date());}}
0 0
- android_65_简易画画板
- Android开发笔记之简易画画板的制作
- Android简易实战教程--第二十四话《画画板》
- 画画板
- 画画板
- 画画板
- android画画板
- 图片画画板
- 图片画画板
- iOS 画画板
- iOS_24_画画板(含取色板)
- android 画画板
- 画画板原理
- andorid画画板
- 图片画画板
- Android画画板剖析
- Android 画画板
- 画画板案例
- 如果你了解我的过去,你就会理解我的现在
- Js处理JSON字符串
- android BaseFragment获取Context上下文方法
- FL Studio钢琴卷轴中的文件菜单的功能
- websocket 与Socket.IO介绍
- android_65_简易画画板
- ECharts 3.0底层zrender 3.x源码分析2-Painter(V层)
- mybatis框架以及mybatis与hibernate的区别
- cvc-complex-type.2.4.c: The matching wildcard is strict ... 报错
- 1269: 基础练习 2n皇后问题
- Log4J blocked 问题
- 国家超级计算天津中心简单操作命令(运行C,C++文件常用命令)
- 关于ListView不进getView()或者是listview不显示数据的一些心得
- Eclipse上传/下载Git项目