在开发中,往往会遇到很多需要将一个功能封装成一个方法。再此,我从工作中总结出来了一些,以方便以后在开发中能够快速的运用。这些是综合了很多人的经验,也不能算是原创了吧,我也忘记了是从哪儿借鉴的了,在此就不列出了。如有雷同,纯属巧合。当然,如果有不对的地方,也请大家多多指教。
一、获取版本号
public static String getVersionName(Context context) {
String version = "";
try {
// 获取PackageManager的实例
PackageManager packageManager = context.getPackageManager();
// getPackageName()获取的是你当前类的包名,0代表是获取版本信息
PackageInfo packInfo = packageManager.getPackageInfo(
context.getApplicationContext().getPackageName(), 0);
version = packInfo.versionName;
} catch (Exception e) {
}
return version;
}
二、实现沉浸式状态栏
java代码片段:
private void setSystemBar() {
if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) {
// 透明状态栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
xml代码片段:在当前activity的布局文件中的根布局中添加下面三句代码,其中背景颜色就是你想要设置的颜色。
android:clipToPadding="true"
android:fitsSystemWindows="true"
android:background="#ef777d"
三、Android中dp和px之间的转换
java代码片段:
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
* @param context
* @param dpValue
* @return
*/
public static int dip2px(Context context, float dpValue) {
final float scale=
context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale =
context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
四、获取控件宽高
java代码片段:
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int height = view.getHeight();
int width = view.getWidth();
}
});
五、判断当前网络是否可用
/**
* 判断当前网络是否可用
* @return
*/
public static boolean isNetworkAvailable() {
// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager == null) {
return false;
} else {
// 获取对象
NetworkInfo[] networkInfo=manager.getAllNetworkInfo();
if (networkInfo != null && networkInfo.length > 0) {
for (int i = 0; i < networkInfo.length; i++) {
// 判断当前网络状态是否为连接状态
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
六、返回数据给上一个活动
第一个Activity的跳转设置
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
重写onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if (null != data) {
if (resultCode == RESULT_OK) {
String returnData = data.getStringExtra("returnData");
}
}
break;
default:
break;
}
}
第二个Activity的跳转设置
Intent intent = new Intent();
intent.putExtra("returnData", "This is returnData");
setResult(RESULT_OK, intent);
finish();
此处传递的是String格式的数据,其他数据请自行更改。
七、改变控件的透明度