android开发中知识点记录

android开发中知识点记录
android开发中知识点记录

状态栏

状态栏颜色设置,4.4以上系统才能设置状态栏

5.0以上google提供activity.getWindow().setStatusBarColor(color);

方法直接设置状态栏颜色,设计上状态栏以深色为佳,不用改变状态栏字体颜色,状态栏默认字体颜色是白色,改变字体颜色在小米,魅族这些定制系统的手机上一般很难适配,达到预期。所以一般不建议设计状态栏,actionBar,导航栏为白色。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上系统//5.0及以上,不设置透明状态栏,设置会有半透明阴影activity.getWindow().clearFlags(https://www.360docs.net/doc/ce18462255.html,youtParams.FLAG_TRAN SLUCENT_STATUS);//设置statusBar的背景色activity.getWindow().setStatusBarColor(color);

} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //4.4 ~ 5.0系统

activity.getWindow().addFlags(https://www.360docs.net/doc/ce18462255.html,youtParams.FLAG_TRANS LUCENT_STATUS);

// 生成一个状态栏大小的矩形View statusView = createStatusBarView(activity, color);// 添加statusView 到布局中ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();

decorView.addView(statusView);//让我们的activity_main。xml中的布局适

应屏幕}

/**

* 获取状态栏的高度*

* @param acitivity* @return*/public static int getStatusBarHeight(Activity acitivity) {int resourceId =

acitivity.getResources().getIdentifier("status_bar_height", "dimen", "android");return

acitivity.getResources().getDimensionPixelOffset(resourceId);

}/**

* 生成一个和状态栏大小相同的矩形条*

* @param activity 需要设置的activity

* @param color 状态栏颜色值* @return 状态栏矩形条*/private static View createStatusBarView(Activity activity, int color) {// 绘制一个和状态栏一样高的矩形View statusBarView = new View(activity);

https://www.360docs.net/doc/ce18462255.html,youtParams params = new

https://www.360docs.net/doc/ce18462255.html,youtParams(https://www.360docs.net/doc/ce18462255.html,youtParams.MATCH_PARENT,get StatusBarHeight(activity));

statusBarView.setLayoutParams(params);

statusBarView.setBackgroundColor(color);return statusBarView;

}

6.0以上系统权限动态申请

在Android6.0中,引入了动态申请权限机制。以前我们在申请权限的时候,都是写在了Manifest.xml里面。安装的时候会有一堆提示申请权限的界面,

请注意,如果你使用了API 23以上, 然而并没有用代码处理权限问题。那么你的程序将会CRASH !!!

需要动态申请的, 也称为危险权限。

先通过

在通过

ContextCompat.checkSelfPermission(@NonNull Context context, @NonNull

String permission)检测权限是否允许,提示和拒绝时,返回-1 ,允许时返回0返回-1时,通过ContextCompat.requestPermission(context,String[]{} permissions)

来申请权限。在activity的回调方法onRequestPermissionsResult获取申请结果

实例:

if (Build.VERSION.SDK_INT >= 23) {

int permiss = ActivityCompat.checkSelfPermission(context,

Manifest.permission.ACCESS_FINE_LOCATION);if (permiss != 0) {//没权限

ActivityCompat.requestPermissions(context,

new String[]{Manifest.permission.ACCESS_FINE_LOCATION},

requestCode);

}else{

//有权限,直接做业务逻辑

}

}

//权限是否成功回调@Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {switch (requestCode)

{case 6: {//权限申请成功if(grantResults != null && grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)//权限申请成功locationUtil.location(true);

}else{// MyToast.toast(getActivity(), "定位权限申请失败,请到设置中设置允许");

}

}

}

}

7.0系统对第三方应用赋予对uri读写的权限

1.AndroidManifest.xml文件,添加provider标签,映射路径

1.

2. android:name="android.support.v4.content."

3. android:authorities="包名.my" //需要和代码中的字符串相同

4. android:exported="false"

5. android:grantUriPermissions="true"

6.

7. android:name="android.support."

8. android:resource="@xml/path_file" />

9.

authorities:是该项目的包名+provider

grantUriPermissions:必须是true,表示授予URI 临时访问权限

exported:必须是false

resource:中的@xml/是我们接下来要在资源文件目录下添加的文件

2.在res/xml下新建一个path_文件,文件名随便去,但是及上步骤一致即可。

1.

2.

3.

4.

12.

录,name="camera_picture"是虚拟目录camera_picture -->

13. //根目录下所有文件

相关主题
相关文档
最新文档