以进入相机拍照的思维路线为例子:
1.进入app
2.判断之前是否保存头像,如果有就显示历史图像 (下面代码中在getOldAvatar()方法中执行这个逻辑)
3.点击更换图像的Button或者布局,启动对话框(下面代码中在dialogueBox()方法执行这个逻辑)
4.系统版本判断授权方式(静态还是动态授权),判断之前是否已经授权 (setPermissions(Permissions_CAMERA_KEY)这个方法执行授权逻辑)
5.如果是首次授权,就执行首次授权完成后马上运行的回调方法 onRequestPermissionsResult
5.判断完成不管是否是首次授权还是之前就是授权过了都要执行enterCamera()方法启动相机并且发送携带数据的请求
6.启动相机完成后,并且拍照完成退出相机,都要运行Intent返回数据请求回调方法onActivityResult。将传入的数据传入到cropPhoto(data.getData())方法里去执行图片剪裁。
7.在cropPhoto方法里将携带数据跳转到裁剪界面中裁剪图片,裁剪完成后又要回到onActivityResult回调方法里,执行裁剪完的数据回调工作。
8.在onActivityResult回调方法里,裁剪完的图片将运行setPicToView 方法保存图片。保存的图片将在下次启动activity时作为历史头像调用。
package com.example.lenovo.mydemoapp
import android.app.Activity
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.os.StrictMode
import android.provider.MediaStore
import android.support.annotation.NonNull
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
拍照功能可以用第三方框架Picasso或者LuckSiege的那个PictureSelector,集成很方便,上传的话,和其他文件上传是一个道理,就http上传到你的服务器就可以了
方法一:
①下载fileupload 插件,将文件转换成流;
②再写出到指定的路径,将存储路径存储在数据库中。
方法二:
可以将头像文件做一次压缩处理,原图一个路径,压缩图一个路径。压缩图路径展示的是小图,原图路径展示的是原图。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)