package com.yuzhiyun.learn.customradiobutton;
/**
* Created by yuzhiyun on 2017/7/18.
*/
import android.app.Application;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.TypedValue;
import android.view.View;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class BitmapHelper {
public BitmapHelper() {
}
public static Bitmap decodeFile(String pathName, float density) {
BitmapFactory.Options options = new BitmapFactory.Options();
float f = 160.0F * density;
options.inDensity = (int)f;
Bitmap bm = BitmapFactory.decodeFile(pathName, options);
if(bm != null) {
bm.setDensity((int)f);
}
return bm;
}
public static Bitmap decodeStream(InputStream is) {
BitmapFactory.Options localOptions = new BitmapFactory.Options();
localOptions.inDensity = 160;
localOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
return BitmapFactory.decodeStream(is, (Rect)null, localOptions);
}
public static Bitmap decodeStream(InputStream is, float density) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDensity = (int)(160.0F * density);
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
return BitmapFactory.decodeStream(is, (Rect)null, options);
}
public static Bitmap decodeURL(String urlString) {
try {
HttpURLConnection e = (HttpURLConnection)(new URL(urlString)).openConnection();
e.setDoInput(true);
e.connect();
return decodeStream(e.getInputStream());
} catch (IOException var2) {
var2.printStackTrace();
return null;
}
}
public static int dip2px(float dp) {
return (int)(convertUnitToPixel(1, dp) + 0.5F);
}
public static float dip2pxF(float dp) {
return convertUnitToPixel(1, dp);
}
public static float px2dip(float px) {
float scale = App.getInstance().getResources().getDisplayMetrics().density;
return px / scale;
}
public static int px(float dp) {
return (int)((float)dip2px(dp) + 0.5F);
}
public static int iPXToPX(float iPX) {
float px = (float)App.getInstance().getResources().getDisplayMetrics().widthPixels / 640.0F * iPX + 0.5F;
return (int)px;
}
public static float iPXToPXF(float iPX) {
return (float)App.getInstance().getResources().getDisplayMetrics().widthPixels / 640.0F * iPX;
}
private static float convertUnitToPixel(int unit, float in) {
return TypedValue.applyDimension(unit, in, App.getInstance().getResources().getDisplayMetrics());
}
public static Bitmap drawableToBitmap(Drawable drawable) {
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != -1? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565;
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
drawable.draw(canvas);
return bitmap;
}
public static Bitmap bitmapAdder(int bottomResId, int topResId) {
return bitmapAdder(bottomResId, topResId, 0.0F);
}
public static Bitmap bitmapAdder(int bottomResId, int topResId, float padding) {
Bitmap bottomBmp = BitmapFactory.decodeResource(App.getInstance().getResources(), bottomResId).copy(Bitmap.Config.ARGB_8888, true);
Bitmap topBmp = BitmapFactory.decodeResource(App.getInstance().getResources(), topResId);
Canvas canvas = new Canvas(bottomBmp);
canvas.drawBitmap(topBmp, (float)(bottomBmp.getWidth() - topBmp.getWidth()) - padding, padding, (Paint)null);
return bottomBmp;
}
public static Bitmap decodeResource(Resources res, int id) {
Bitmap bitmap = null;
try {
Bitmap e = BitmapFactory.decodeResource(res, id);
bitmap = e.copy(Bitmap.Config.ARGB_8888, true);
e.recycle();
} catch (OutOfMemoryError var4) {
;
}
return bitmap;
}
public static Bitmap getBitmapFromView(View view) {
view.destroyDrawingCache();
view.measure(View.MeasureSpec.makeMeasureSpec(0, 0), View.MeasureSpec.makeMeasureSpec(0, 0));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
public static BitmapDrawable getDrawableFromView(View view) {
BitmapDrawable drawable = new BitmapDrawable(getBitmapFromView(view));
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
}
開源一個BitmapHelper.java
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.