好记性不如烂笔头(零)

俗话说,好记性不如烂笔头! 在平常的开发工作中,很多时候我们都会用到一些代码量比较小,但是却很有用的功能,但是,都只是写过就算,下一次再想起来用的时候,已经不知道该去哪儿找了。 常常因为这些小点而浪费时间,,也随着年纪渐长,智商有限,还是靠记下来,以备不时之需呀。

获取圆形图片

/*** bitmap 要进行剪裁的位图* size 剪裁的圆形图片的大小*/ public static Bitmap getCroppedRoundBitmap(Bitmap bitmap, int size) {if (bitmap == null || bitmap.isRecycled() || size < 0) {return null;}Bitmap result = Bitmap.createBitmap(size, size, Config.ARGB_8888);Canvas canvas = new Canvas(result);/* 一般圆是内切于一个正方形的,所以我们要从这张bitmap中找出一个最大的正方形的位置,以长或者宽的长度为正方形的边(哪个短取哪个)*/int bmpWidth = bitmap.getWidth();int bmpHeight = bitmap.getHeight();int x = 0, y = 0;if (bmpHeight > bmpWidth) {x = 0;y = (bmpHeight – bmpWidth) / 2;} else if (bmpHeight < bmpWidth) {x = (bmpWidth – bmpHeight) / 2;y = 0;}Paint paint = new Paint();/*srcRect 是我们要剪截的原图中的某块区域,可以为空,则从0,0,即图的左上角开始,而x,y,则是根据上面代码找出来的点*/Rect srcRect = new Rect(x, y, bmpWidth, bmpHeight);/*dstRect 是目标正方形的大小*/Rect dstRect = new Rect(0, 0, size, size);//对于paint的设置是为了要防止出现锯齿,但这种设置,对于如果利用clipPath来画的图像是不起作用的。paint.setAntiAlias(true);paint.setFilterBitmap(true);paint.setDither(true);canvas.drawARGB(0, 0, 0, 0);canvas.drawCircle(size / 2, size / 2, size / 2, paint);/*利用Xfermode的SRC_IN,则只绘制原图bitmap在圆圈中的区域,从而获取圆形切图*/paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));canvas.drawBitmap(bitmap, srcRect, dstRect, paint);return result;}

获取系统方向(旋转)是否锁定

DEFAULT_ACCELEROMETER_ROTATION = -1;int lock = Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION,DEFAULT_ACCELEROMETER_ROTATION);if (lock == 1) {mTvOrientationLock.setText(“Unlocked”);} else {// rotation is LockedmTvOrientationLock.setText(“Locked”);}

遇到这种与系统设置相关的配置信息时,我们应该先去Settings等系统类中去找一下,然后有针对性地利用关键字进行搜索,效果会好很多。

从URI中获取图片的地址

private static String getRealPathFromURI(Context context, Uri contentURI) {String result = “”;Cursor cursor = context.getContentResolver().query(contentURI, null, null, null, null);if (cursor == null) {result = contentURI.getPath();} else {if (cursor.moveToFirst()) {int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);result = cursor.getString(idx);}cursor.close();}return result;}

根据图片路径读取图片的旋转角度

(String path) {int degree = 0;try {ExifInterface exifInterface = new ExifInterface(path);int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);switch (orientation) {case ExifInterface.ORIENTATION_ROTATE_90:degree = 90;break;case ExifInterface.ORIENTATION_ROTATE_180:degree = 180;break;case ExifInterface.ORIENTATION_ROTATE_270:degree = 270;break;}} catch (IOException e) {e.printStackTrace();}return degree;}

上帝助自助者。

好记性不如烂笔头(零)

相关文章:

你感兴趣的文章:

标签云: