当前位置: 首页 > news >正文

江苏丹阳建设公司网站百度网页入口

江苏丹阳建设公司网站,百度网页入口,旅游网站开发背景,简述网页制作的步骤前言现在的APP基本都有个人资料的填写#xff0c;基本的都有头像的选择#xff0c;支持拍照和从本地相册选择#xff0c;剪切圆形头像的功能#xff0c;现在用个小demo实现以下。下面看一下效果图上代码#xff1a;主界面代码package com.example.androidpersonal_icon;im…前言现在的APP基本都有个人资料的填写基本的都有头像的选择支持拍照和从本地相册选择剪切圆形头像的功能现在用个小demo实现以下。下面看一下效果图上代码主界面代码package com.example.androidpersonal_icon;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.util.Log;import android.view.Gravity;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;public class MainActivity extends Activity {protected static final int CHOOSE_PICTURE 0;protected static final int TAKE_PICTURE 1;private static final int CROP_SMALL_PICTURE 2;protected static Uri tempUri;private ImageView iv_personal_icon;private SelectPicPopupWindow menuWindow;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 新建一个用来存储照片的文件夹File destDir new File(Environment.getExternalStorageDirectory() /AndroidPersonal_icon);if (!destDir.exists()) {destDir.mkdirs();}iv_personal_icon (ImageView) findViewById(R.id.iv_personal_icon);iv_personal_icon.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {// 实例化SelectPicPopupWindowmenuWindow new SelectPicPopupWindow(MainActivity.this, itemsOnClick);// 显示窗口menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main),Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); // 设置layout在PopupWindow中显示的位置}});// 读取上一次剪切的照片if (destDir.exists() destDir.isDirectory()) {if (destDir.list().length 0) {Log.d(111111111112, destDir.toString() /image_icon.png);Bitmap bitmap BitmapFactory.decodeFile(destDir.toString() /image_icon.png);iv_personal_icon.setImageBitmap(bitmap);} else {iv_personal_icon.setBackgroundResource(R.drawable.default_personal_image);}}}// 为弹出窗口实现监听类private OnClickListener itemsOnClick new OnClickListener() {public void onClick(View v) {menuWindow.dismiss();switch (v.getId()) {case R.id.Layout_take_photo:Intent openCameraIntent new Intent(MediaStore.ACTION_IMAGE_CAPTURE);tempUri Uri.fromFile(new File(Environment.getExternalStorageDirectory() /AndroidPersonal_icon, image.jpg));Log.d(11111111, tempUri.toString());// 指定照片保存路径(SD卡)image.jpg为一个临时文件每次拍照后这个图片都会被替换openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);startActivityForResult(openCameraIntent, TAKE_PICTURE);break;case R.id.Layout_pick_photo:Intent openAlbumIntent new Intent(Intent.ACTION_GET_CONTENT);openAlbumIntent.setType(image/*);startActivityForResult(openAlbumIntent, CHOOSE_PICTURE);break;default:break;}}};Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode RESULT_OK) { // 如果返回码是可以用的switch (requestCode) {case TAKE_PICTURE:startPhotoZoom(tempUri); // 开始对图片进行裁剪处理break;case CHOOSE_PICTURE:startPhotoZoom(data.getData()); // 开始对图片进行裁剪处理break;case CROP_SMALL_PICTURE:if (data ! null) {setImageToView(data); // 让刚才选择裁剪得到的图片显示在界面上}break;}}}/*** 裁剪图片方法实现** param uri*/protected void startPhotoZoom(Uri uri) {if (uri null) {Log.i(tag, The uri is not exist.);}tempUri uri;Intent intent new Intent(com.android.camera.action.CROP);intent.setDataAndType(uri, image/*);// 设置裁剪intent.putExtra(crop, true);// aspectX aspectY 是宽高的比例intent.putExtra(aspectX, 1);intent.putExtra(aspectY, 1);// outputX outputY 是裁剪图片宽高intent.putExtra(outputX, 150);intent.putExtra(outputY, 150);intent.putExtra(return-data, true);startActivityForResult(intent, CROP_SMALL_PICTURE);}/*** 保存裁剪之后的图片数据** param** param picdata*/protected void setImageToView(Intent data) {Bundle extras data.getExtras();if (extras ! null) {Bitmap photo extras.getParcelable(data);photo Utils.toRoundBitmap(photo, tempUri); // 这个时候的图片已经被处理成圆形的了iv_personal_icon.setImageBitmap(photo);uploadPic(photo);}}private void uploadPic(Bitmap bitmap) {// 上传至服务器// ... 可以在这里把Bitmap转换成file然后得到file的url做文件上传操作// 注意这里得到的图片已经是圆形图片了// bitmap是没有做个圆形处理的但已经被裁剪了String imagePath Utils.savePhoto(bitmap,Environment.getExternalStorageDirectory().getAbsolutePath() /AndroidPersonal_icon, image_icon);Log.d(imagePath, imagePath );if (imagePath ! null) {// 拿着imagePath上传了// ...}}}圆形头像剪切代码package com.example.androidpersonal_icon;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.net.Uri;import android.util.Log;public class Utils {/*** Save image to the SD card** param photoBitmap* param photoName* param path*/public static String savePhoto(Bitmap photoBitmap, String path,String photoName) {String localPath null;if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {File dir new File(path);if (!dir.exists()) {dir.mkdirs();}File photoFile new File(path, photoName .png);FileOutputStream fileOutputStream null;try {fileOutputStream new FileOutputStream(photoFile);if (photoBitmap ! null) {if (photoBitmap.compress(Bitmap.CompressFormat.PNG, 100,fileOutputStream)) { // 转换完成localPath photoFile.getPath();fileOutputStream.flush();}}} catch (FileNotFoundException e) {photoFile.delete();localPath null;e.printStackTrace();} catch (IOException e) {photoFile.delete();localPath null;e.printStackTrace();} finally {try {if (fileOutputStream ! null) {fileOutputStream.close();fileOutputStream null;}} catch (IOException e) {e.printStackTrace();}}}return localPath;}/*** 转换图片成圆形** param bitmap* 传入Bitmap对象* param tempUri* return*/public static Bitmap toRoundBitmap(Bitmap bitmap, Uri tempUri) {int width bitmap.getWidth();int height bitmap.getHeight();float roundPx;float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;if (width height) {roundPx width / 2;left 0;top 0;right width;bottom width;height width;dst_left 0;dst_top 0;dst_right width;dst_bottom width;} else {roundPx height / 2;float clip (width - height) / 2;left clip;right width - clip;top 0;bottom height;width height;dst_left 0;dst_top 0;dst_right height;dst_bottom height;}Bitmap output Bitmap.createBitmap(width, height, Config.ARGB_8888);Canvas canvas new Canvas(output);final int color 0xff424242;final Paint paint new Paint();final Rect src new Rect((int) left, (int) top, (int) right,(int) bottom);final Rect dst new Rect((int) dst_left, (int) dst_top,(int) dst_right, (int) dst_bottom);final RectF rectF new RectF(dst);paint.setAntiAlias(true);// 设置画笔无锯齿canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvaspaint.setColor(color);// 以下有两种方法画圆,drawRounRect和drawCircle// canvas.drawRoundRect(rectF, roundPx, roundPx, paint);//// 画圆角矩形第一个参数为图形显示区域第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。canvas.drawCircle(roundPx, roundPx, roundPx, paint);paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circlereturn output;}}ok,大功告成,最后别忘了在清单文件中添加读写sd可权限不然得不到imagePath
http://wiki.neutronadmin.com/news/296081/

相关文章:

  • 怎么做网站评估wordpress发送大量邮件
  • 门户网站建设课程设计装修设计图网站
  • 浦口网站建设wordpress关闭某个栏目
  • 大连里程科技做网站成都网站制作设计公司
  • 网站制作和推广lv官网微商店铺怎么开通
  • 怎么查看一个网站是哪家公司做的做网站需要多少钱平邑
  • 房地产网站广告销售怎么做银川网站建设就找湖海
  • ps网站建设目标海外引流推广平台
  • 网站广告联盟怎么做的用自己的服务器建网站
  • 织梦新手网站建设没有相应营业执照怎么做网站
  • 阿里巴巴网站推广方式网站建设的公司做销售
  • 嵌入式软件开发和c++软件开发上海网站建设优化价格
  • 社保局网站建设意义代理公司注册后果严重
  • 专业做网站公司24小时接单郑州建站的
  • 昌平网站建设东莞网站建设公司招聘信息
  • 郑州网站建设包括哪些看设计案例的有哪些网站
  • 在新西兰做兼职的网站成品视频直播软件推荐哪个好一点
  • 做网站怎么在图片上加文字亿度网络 网站建设
  • 哪类型网站容易做南通网站建设祥云
  • 杭州seo网站推广排名ui设计app界面设计流程
  • 安徽营销型网站建设微云怎么做网站
  • 网站后台更新了 前台不现实做婚纱网站的意义
  • 世界杯竞猜网站开发德州王霞网站建设
  • 抄袭别人网站wordpress 数据库查询插件
  • 个人网站如何建设图片分页wordpress主题
  • 网站建设站点标题在什么位置在安阳想建个网站怎么做
  • 网站的记住密码功能怎么做做网站卖掉
  • 观山湖网站建设推广在wordpress上添加播放视频播放器
  • seo批量建站方法dede和wordpress哪个安全
  • 信息最全的网站h5 高端网站建设