欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

android美图秀秀--基础

发布时间:2023/12/31 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 android美图秀秀--基础 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
现在android的美图秀秀被大多数女孩和一些男孩喜欢,什么吃饭的时候拍一张呀、玩的时候拍一张、就连kiss时也有可能来一张。你是不是经常看到别人拿个手机自拍,抬头仰望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美图秀秀--基础的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。