android美图秀秀--基础
生活随笔
收集整理的這篇文章主要介紹了
android美图秀秀--基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現在android的美圖秀秀被大多數女孩和一些男孩喜歡,什么吃飯的時候拍一張呀、玩的時候拍一張、就連kiss時也有可能來一張。你是不是經??吹絼e人拿個手機自拍,抬頭仰望45°角 咔!我們天天接觸到的東西,我們卻不知道它是在如何工作的。現在我們就來說說基礎級別的android美圖秀秀功能吧,難的都是很多個基礎拼接起來組成的大的應用。
還是和以前一樣我們看一下codepackage com.example.test;import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
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.provider.MediaStore;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;public class MainActivity extends Activity {public final static String TAG = "MainActivity";private Button mButton;private ImageView mImageView;private Canvas mCanvas;private Paint mPaint;public String mCurrentPPath ;public final static int IMAGE_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MainActivity.this.getWindow().setBackgroundDrawableResource(R.drawable.bg);mButton = (Button) findViewById(R.id.button);mButton.setTextColor(Color.RED);mButton.setTextSize(30);mButton.setBackgroundColor(Color.GREEN);mButton.setOnClickListener(mClickListener);mImageView = (ImageView) findViewById(R.id.picture);mImageView.setOnTouchListener(mTouchListener);mPaint = new Paint();mPaint.setColor(Color.RED);}private OnClickListener mClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {allScan();//刷新SD卡Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");intent.putExtra("return-data", true);startActivityForResult(intent, IMAGE_CODE);}};private OnTouchListener mTouchListener = new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {float x = event.getX();float y = event.getY();if (mCanvas != null) {mCanvas.drawCircle(x, y, 10, mPaint);mImageView.invalidate();}return true;}};/** (non-Javadoc)* * @see android.app.Activity#onActivityResult(int, int,* android.content.Intent)*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == IMAGE_CODE && resultCode == RESULT_OK && null != data) {Uri selectedImage = data.getData();String[] filePathColumn = { MediaStore.Images.Media.DATA };Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);cursor.moveToFirst();int columnIndex = cursor.getColumnIndex(filePathColumn[0]);String picturePath = cursor.getString(columnIndex);cursor.close();
// mBitmap = BitmapFactory.decodeFile(picturePath).copy(Config.ARGB_8888, true);
// mImageView.setImageBitmap(mBitmap);
// mCanvas = new Canvas(mBitmap);Intent intent = new Intent();intent.setClass(this, CanvasActivity.class);intent.putExtra("path", picturePath);startActivity(intent);}super.onActivityResult(requestCode, resultCode, data);}public void allScan(){ sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); }
}package com.example.test;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;public class CanvasActivity extends Activity {private ImageView imageView;private Canvas mCanvas;private Paint mPaint;public Bitmap xbitmap;public String mCurrentPPath ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_canvas);imageView = (ImageView) findViewById(R.id.pic);Intent intent = getIntent();String pathString = intent.getStringExtra("path");//獲取圖片地址mCurrentPPath = pathString ;Bitmap bitmap = BitmapFactory.decodeFile(pathString).copy(Config.ARGB_8888, true);imageView.setImageBitmap(bitmap);imageView.setOnTouchListener(mTouchListener);mCanvas = new Canvas(bitmap);mPaint = new Paint();mPaint.setColor(Color.RED);Button btn1 = (Button) findViewById(R.id.btn1);btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {imageView.setDrawingCacheEnabled(true);Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());File file = new File("/sdcard/"+ System.currentTimeMillis() +".png");if(!file.exists()){try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}try {FileOutputStream out = new FileOutputStream(file);if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)) {out.flush();out.close();}imageView.setDrawingCacheEnabled(false);Toast.makeText(CanvasActivity.this, "保存成功!", 1).show();} catch (FileNotFoundException e) {e.printStackTrace();Toast.makeText(CanvasActivity.this, "保存失敗!", 1).show();} catch (IOException e) {e.printStackTrace();Toast.makeText(CanvasActivity.this, "保存失敗!", 1).show();}}});Button btn2 = (Button) findViewById(R.id.btn2);btn2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {xbitmap = BitmapFactory.decodeResource(getResources(),R.drawable.aba);}});Button btn3 = (Button) findViewById(R.id.btn3);btn3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {File f =new File(mCurrentPPath);f.delete();Toast.makeText(CanvasActivity.this, "刪除成功!", 1).show();}});Button btn4 = (Button) findViewById(R.id.btn4);btn4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SharePhoto(mCurrentPPath, null);}});}private OnTouchListener mTouchListener = new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {float x = event.getX();float y = event.getY();if (mCanvas != null) {// mCanvas.drawCircle(x, y, 10, mPaint);// imageView.invalidate();Bitmap bitmap = null ;if(xbitmap!=null){bitmap = xbitmap;}else {bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);}mCanvas.drawBitmap(bitmap, x, y, mPaint);imageView.invalidate();}return true;}};public void SharePhoto(String photoUri,final Activity activity) { Intent shareIntent = new Intent(Intent.ACTION_SEND); File file = new File(photoUri); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "xxxx")); }
}看一下布局文件
activity_main.xml(一)
<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=".MainActivity" ><Button android:layout_width="wrap_content"android:id="@+id/button"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="圖片集"/><ImageView android:id="@+id/picture"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@id/button"/></RelativeLayout>activity_canvas.xml(二)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:id="@+id/pic"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="保存" /><Buttonandroid:id="@+id/btn2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="簽名" /><Buttonandroid:id="@+id/btn3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="刪除" /><Buttonandroid:id="@+id/btn4"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="分享" />
</LinearLayout>記得要在AndroidManifest.xml中加上<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />這句 這是讓你有讀寫SD卡的權限
再看一下運行的截圖
這是app運行的初始界面
當我們點擊圖片集按鈕時進入我們之前放在android模擬器中的圖片
我們在隨機選擇一張圖片進行編輯,默認進入后點擊圖片上的位置時會畫上android機器人的圖片,當我們選擇簽名時,再點擊圖片上的位置時就會把我們的大名簽進去,隨后就是保存了。
保存后我們看到圖片集中多了我們簽了名的圖片
由于做的有點丑,我們就再選擇我們簽名的圖片,把它刪除掉。
隨便選擇一張圖片,編輯后,我們把它分享(分享按鈕看上一張中的操作消息提示語? 給擋住了)
點擊上圖中的MMS向右的箭頭?????? 我們就分享了給我們的好友了
在顏色重的那個文件中一定要寫入我們的操作權限(上面的code中有重點提出來),之后就是發布我們的app了,就是下面那個test.apk,再res→drawable-mdpi目錄下aba.png就是我們的簽名截圖、bg.jpg就是我們進入程序是背景的那只小狗狗圖片、ic_launcher.png就是我們默認畫入的android機器人圖片。
說下我們如何給模擬器加入圖片,打開File Explorer選中mnt目錄下的sdcard目錄,再點擊右上角手機圖標,插入我們選擇的文件或是圖片(sdcard目錄后的d---rwxr-x這是你操作它的讀寫刪的英文縮寫)
總結
以上是生活随笔為你收集整理的android美图秀秀--基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PB 模糊查询
- 下一篇: ABAP SQL 截取字段值、去掉前导零