1:来自seal_talk
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Environment;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.inputmethod.InputMethodManager;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import java.util.Properties;
/**
* [公共工具类,与Android API相关的辅助类]
*
* @author devin.hu
* @version 1.0
* @date 2013-9-30
*
**/
public class CommonUtils {
@SuppressWarnings("unused")
private static final String tag = CommonUtils.class.getSimpleName();
/** 网络类型 **/
public static final int NETTYPE_WIFI = 0x01;
public static final int NETTYPE_CMWAP = 0x02;
public static final int NETTYPE_CMNET = 0x03;
/**
* 根据key获取config.properties里面的值
* @param context
* @param key
* @return
*/
public static String getProperty(Context context, String key) {
try {
Properties props = new Properties();
InputStream input = context.getAssets().open("config.properties");
if (input != null) {
props.load(input);
return props.getProperty(key);
}
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 检测网络是否可用
*
* @return
*/
public static boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
return ni != null && ni.isConnectedOrConnecting();
}
/**
* 获取当前网络类型
*
* @return 0:没有网络 1:WIFI网络 2:WAP网络 3:NET网络
*/
public static int getNetworkType(Context context) {
int netType = 0;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo == null) {
return netType;
}
int nType = networkInfo.getType();
if (nType == ConnectivityManager.TYPE_MOBILE) {
String extraInfo = networkInfo.getExtraInfo();
if (!TextUtils.isEmpty(extraInfo)) {
if (extraInfo.toLowerCase(Locale.getDefault()).equals("cmnet")) {
netType = NETTYPE_CMNET;
} else {
netType = NETTYPE_CMWAP;
}
}
} else if (nType == ConnectivityManager.TYPE_WIFI) {
netType = NETTYPE_WIFI;
}
return netType;
}
/**
* 判断SDCard是否存在,并可写
*
* @return
*/
public static boolean checkSDCard() {
String flag = Environment.getExternalStorageState();
return Environment.MEDIA_MOUNTED.equals(flag);
}
/**
* 获取屏幕宽度
* @param context
* @return
*/
public static int getScreenWidth(Context context) {
DisplayMetrics dm = context.getResources().getDisplayMetrics();
return dm.widthPixels;
}
/**
* 获取屏幕高度
* @param context
* @return
*/
public static int getScreenHeight(Context context) {
DisplayMetrics dm = context.getResources().getDisplayMetrics();
return dm.heightPixels;
}
/**
* 获取屏幕显示信息对象
* @param context
* @return
*/
public static DisplayMetrics getDisplayMetrics(Context context) {
DisplayMetrics dm = context.getResources().getDisplayMetrics();
return dm;
}
/**
* dp转pixel
*/
public static float dpToPixel(float dp, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
return dp * (metrics.densityDpi / 160f);
}
/**
* pixel转dp
*/
public static float pixelsToDp(float px, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
return px / (metrics.densityDpi / 160f);
}
/**
* 生成二维码图片
* @param str
* @return
*/
/**
* 短信分享
*
* @param mContext
* @param smstext 短信分享内容
* @return
*/
public static Boolean sendSms(Context mContext, String smstext) {
Uri smsToUri = Uri.parse("smsto:");
Intent mIntent = new Intent(Intent.ACTION_SENDTO, smsToUri);
mIntent.putExtra("sms_body", smstext);
mContext.startActivity(mIntent);
return null;
}
/**
* 邮件分享
*
* @param mContext
* @param title 邮件的标题
* @param text 邮件的内容
* @return
*/
public static void sendMail(Context mContext, String title, String text) {
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, "");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, title);
emailIntent.putExtra(Intent.EXTRA_TEXT, text);
mContext.startActivity(Intent.createChooser(emailIntent, "Choose Email Client"));
}
/**
* 隐藏软键盘
* @param activity
*/
public static void hideKeyboard(Activity activity) {
if (activity != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
}
}
/**
* 显示软键盘
* @param activity
*/
public static void showKeyboard(Activity activity) {
if (activity != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (!imm.isActive()) {
imm.showSoftInputFromInputMethod(activity.getCurrentFocus().getWindowToken(), 0);
}
}
}
/**
* 是否横屏
* @param context
* @return true为横屏,false为竖屏
*/
public static boolean isLandscape(Context context) {
return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
}
/**
* 判断是否是平板
* 这个方法是从 Google I/O App for Android 的源码里找来的,非常准确。
* @param context
* @return
*/
public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
}
2 Bitmap常用函数
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.PixelFormat
import android.graphics.drawable.Drawable
/**
* Created by XiaoJun on 2017/8/20.
* Version 1.0.0
*/
object BitmapUtils {
fun drawableToBitmap(drawable: Drawable): Bitmap {
val w = drawable.intrinsicWidth
val h = drawable.intrinsicHeight
val config = if (drawable.opacity != PixelFormat.OPAQUE)
Bitmap.Config.ARGB_8888
else
Bitmap.Config.RGB_565
val bitmap = Bitmap.createBitmap(w, h, config)
val canvas = Canvas(bitmap)
drawable.setBounds(0, 0, w, h)
drawable.draw(canvas)
return bitmap
}
/**
* 裁剪
* @param bitmap 原图
* *
* @return 裁剪后的图像
*/
fun cropBitmap(bitmap: Bitmap, aimWidth:Int, aimHeight:Int): Bitmap {
var toWidth = aimWidth;
var toHeight = aimHeight
if (aimWidth > bitmap.width) toWidth = bitmap.width
if (aimHeight > bitmap.height) toHeight = bitmap.height
val cropWidthSide = (bitmap.width - aimWidth)/2
val cropHeightSide = (bitmap.height - aimHeight)/2
return Bitmap.createBitmap(bitmap,cropWidthSide,cropHeightSide,toWidth,toHeight)
}
}