• android 简单的画图片


    layout:

    <LinearLayout 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:orientation="vertical"
        tools:context="com.example.paint.MainActivity" >
    
        <Button
            android:onClick="save"
            android:id="@+id/btn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="保存" />
        <Button
            android:onClick="selectImage"
            android:id="@+id/select"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="选择一个图片" />
    
        <ImageView
            android:layout_above="@id/select"
            android:id="@+id/iv"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            />
    </LinearLayout>

    main_activity

    package com.example.paint;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.Bitmap.CompressFormat;
    import android.graphics.Bitmap.Config;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.support.v7.app.ActionBarActivity;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    
    public class MainActivity extends ActionBarActivity {
    
        private ImageView iv;
        
        private Bitmap baseBitmap;
        
        private Canvas canvas; //画布
        
        private Paint paint; //画笔
        
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            paint = new Paint();
            //画笔宽度
            paint.setStrokeWidth(5);
            //画笔颜色
            paint.setColor(Color.GREEN);
            
            //创建一个可以修改的bitmap
            baseBitmap = Bitmap.createBitmap(320, 350, Config.ARGB_8888);
            //创建一个画布
            canvas = new Canvas(baseBitmap);
            //设置背景色
            canvas.drawColor(Color.WHITE);
            
            iv = (ImageView)findViewById(R.id.iv);
            
            //知道用户手指在平美国上移动的轨迹
            iv.setOnTouchListener(new OnTouchListener() {
                //获取手指开始位置的坐标
                int startX;
                int startY;
                @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, newY, newY, paint);
                            
                            //重新更新画笔开始位置
                            startX =  (int)event.getX();
                            startY = (int)event.getY();                        
                            iv.setImageBitmap(baseBitmap);
                            break;
                        case MotionEvent.ACTION_UP: //手指离开屏幕的动作
                            
                            break;
                    
                    }
                    
                    //return true 表示画笔一直触动
                    return true;
                }
    
                
            });
        }
        
        
        
        public void selectImage(View view)
        {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent, 0);
            
        }
        
        @Override
        protected void onActivityResult(int arg0, int arg1, Intent data) {
            if(data!=null)
            {
                
                Uri uri = data.getData();
                Bitmap bitmap = data.getParcelableExtra("data");
                baseBitmap = bitmap;
                iv.setImageURI(uri);
                
            }
            super.onActivityResult(arg0, arg1, data);
        }
        
        
        public void save(View view)
        {   
            try {
                
                File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
                FileOutputStream fos = new FileOutputStream(file);
                //保存图片
                baseBitmap.compress(CompressFormat.JPEG, 100, fos);
                
                Toast.makeText(this, "保存图片成功", 0).show();
                
                //模拟一个消息通知系统sd卡被重新挂载
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
                intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
                sendBroadcast(intent);
                
            } catch (Exception e) {
                Toast.makeText(this, "保存图片失败", 0).show();
                e.printStackTrace();
            }
            
        }
    
    
      
    }
  • 相关阅读:
    LINQ学习笔记(4) 扩展方法
    LINQ学习笔记(2) 匿名类型
    jQuery选择器总结
    C#3.0学习笔记(9)转换
    C#3.0学习笔记(11)枚举数和foreach语句实现原理
    C#3.0学习笔记(7)浅谈委托
    C#3.0学习笔记(10)泛型
    中亚网络面试总结
    C#3.0学习笔记(8)浅谈接口interface
    通过VS2010的内存分析工具来分析程序性能问题
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/3975972.html
Copyright © 2020-2023  润新知