多媒体_画画板---保存画完图片,并发送广播,让图库可以看到

转载 2016年06月01日 23:07:22

//布局文件

<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"
    tools:context="${relativePackage}.${activityClass}" >

    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bg" />

    <LinearLayout 
        android:layout_alignParentBottom="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
      
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="red"
            android:text="红色"/>
        
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="green"
            android:text="绿色"/>
        
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="brush"
            android:text="刷子"/>
        
         <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="save"
            android:text="保存"/>
        
        
        
    </LinearLayout>
</RelativeLayout>


//MainActivity配置文件

package com.example.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import android.app.Activity;
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 Activity {
	private int startX;
	private int startY;
	private Paint paint;
	private Canvas canvas;
	private ImageView iv;
	private Bitmap bmSrc;
	private Bitmap bmCopy;
	
	@Override
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//画一条线测试
		bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.bg);	
		
		bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());
		//画笔
		paint = new Paint();
		//画板
		canvas = new Canvas(bmCopy);
		//作画  到此步bmCopy和bmSrc的图片才会一样
		canvas.drawBitmap(bmSrc, new Matrix(), paint);
		//画一条线
		//canvas.drawLine(10, 10, 100, 100, paint);
		
		
		iv = (ImageView) findViewById(R.id.iv);
		iv.setImageBitmap(bmCopy);
		
		
		iv.setOnTouchListener(new OnTouchListener() {

			//手指触摸屏幕,就会产生触摸事件
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				//判断触摸事件的类型
				switch (event.getAction()) {    //表示触摸事件类型
				//手指触摸   开始坐标
				case MotionEvent.ACTION_DOWN:
					//触摸事件中会包含手指触摸的坐标
					startX = (int) event.getX();   
					startY = (int) event.getY();   
					break;
					//手指滑动   结束坐标
				case MotionEvent.ACTION_MOVE:
					int newX = (int) event.getX();   
					int newY = (int) event.getY();   
					//指定线的起点和终点
					canvas.drawLine(startX,startY , newX, newY, paint);
					iv.setImageBitmap(bmCopy);
					
					//把本次画线的重点设置为下一次画线的起点
					startX = newX;
					startY = newY;
					break;
					//手指离开
				case MotionEvent.ACTION_UP:
					break;
				}
				
				//true表示告诉系统,这个触摸事件由IV处理
				//false表示不处理该触摸事件,事件往上传递
				return true;
			}
		});
		
	}
	
	//改变颜色
	public void red(View v){
		paint.setColor(Color.RED);
	}
	
	public void green(View v){
		paint.setColor(Color.GREEN);
	}
	
	public void brush(View v){
		//改变线条粗细
		paint.setStrokeWidth(8);
	}
	
	public void save(View v){
		/**
		 * arg0:图片格式
		 * arg1:压缩质量 0-100
		 * arg2:输出流,保存的位置
		 */
		File file = new File("mnt/sdcard/tt2.png");
		FileOutputStream fos;
		try {
			//把图片压缩到本地文件
			fos = new FileOutputStream(file);
			bmCopy.compress(CompressFormat.PNG, 100, fos);
			fos.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//手动发送sd卡就绪广播
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
		intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
		//无序广播
		sendBroadcast(intent);
		
	}	
	
	
}


//添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


相关文章推荐

LINUX 下UDP发送广播

  • 2013年12月26日 18:54
  • 10KB
  • 下载

Android发送广播

  • 2016年07月22日 16:17
  • 975KB
  • 下载

android开发笔记之多媒体—画画板(娱乐一下)

效果: 其实画画板的原理很简单,就是首先记录下按下屏幕的点,然后没移动一下就让这两次移动的连线,周而复始,图像就由很多条直线构成了。 核心代码 :public class MainActivi...

飞鸽传书发送广播和消息的过程

  • 2011年10月26日 09:00
  • 76KB
  • 下载

【JavaScript】基于H5 canvas实现的画板绘图工具(类似你画我猜)——整合颜色选取、保存图片到本地功能

本来想尝试用做一个网页版的美图秀秀,可以导入的对图片进行处理,还有制作一些模板可以快速生成人物的表情包,但是做着做着,发现太耗时间了。结果最终只是简单做了一个基于 canvas 的绘图画板。...

Android如何在局域网中发送广播

Android如何在局域网中发送广播目前做的项目是当两个设备都接入一个Wifi热点后可以找到对方。如何找呢?大家一下子就会想到发送广播,对的就是发送广播。下面是一个实例如何发送一个UDP广播的例子。首...
  • kingroc
  • kingroc
  • 2016年08月11日 19:02
  • 2188

如何在一个Activity更新另一个Activity的UI(发送广播的方法)

activity_main.xml

iOS 怎样通过UDP发送广播寻找设备,拿到ip地址,然后用TCP 连接设备

1.前言      什么是UDP协议广播机制?      举一个例, 例如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三”   如果它是张三,它就会回应你,在网络中也...

android通过AlarmManager固定时间与周期性的发送广播

* Note: The Alarm Manager is intended for cases where you want to have  * your application code run ...
  • zdnuist
  • zdnuist
  • 2015年04月29日 17:18
  • 360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多媒体_画画板---保存画完图片,并发送广播,让图库可以看到
举报原因:
原因补充:

(最多只允许输入30个字)