获取屏幕参数
屏幕参数是某些自定义View必须的参数(基于Android 27)
1、非Activity调用:
WindowManager wm = (WindowManager)getContext().getSystemService(Context.WIINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(dm);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
2、Activity调用:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
设置全屏
1、代码设置:
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 这个方法必修在setContentView()之前调用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
2、AndroidManifest.xml 中配置 Activity以及自定义Style属性文件:
AndroidManifest.xml文件:
styles.xml文件添加:
两种方式都可实现页面全屏(如果第二种主题用在application节点的话,整个应用都会默认全屏),
第一种方式设置之后在页面打开的时候会弹一下状态栏然后消失,所以建议使用第二种。
设置屏幕常亮
在页面代码中添加window的flag:
//申请权限
//关闭常亮window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
非原生Activity的常亮设置:
在application继承类中的onCreate()方法中实现 registerActivityLifecycleCallbacks()接口,并在对应的Activity生命周期中打开屏幕常亮即可。详细请参考 出门左转。
调节屏幕亮度
getWindow().getAttributes().screenBrightness = 1f;//亮度值为 0f-1f,0f为最暗,1f最亮;
调节音量
//获取音频管理器
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);//设置音量 。在设置之前最好先获取一下设备最大音量值,AudioManager.getStreamMaxVolume(AudioManager.STREAM_XXXXX) audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,6,AudioManager.FLAG_SHOW_UI)//源码 参数1:音频类型 AudioManager.STREAM__XXXX (媒体、通话、通知),
//参数2:设置值,
//参数3:辅助参数 AudioManager.FLAG_XXXX (设置音量的时候是显示空控件,还是播放声音,还是震动等);
public void setStreamVolume(int streamType, int index, int flags) { final IAudioService service = getService(); try { service.setStreamVolume(streamType, index, flags, getContext().getOpPackageName());} catch (RemoteException e) {throw e.rethrowFromSystemServer(); }
}
参考 Android音量控制