安卓实用方法总结(更新中……)

    在开发中,往往会遇到很多需要将一个功能封装成一个方法。再此,我从工作中总结出来了一些,以方便以后在开发中能够快速的运用。这些是综合了很多人的经验,也不能算是原创了吧,我也忘记了是从哪儿借鉴的了,在此就不列出了。如有雷同,纯属巧合。当然,如果有不对的地方,也请大家多多指教。

一、获取版本号

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格式的数据,其他数据请自行更改。

七、改变控件的透明度

猜你喜欢

转载自blog.csdn.net/youngmy5/article/details/50553634