安卓4.2如何在全屏游戏怎么录视频(视频、游戏等)下通过从屏幕顶端下滑让状态栏出来

 |  |  |  |  | 
热门搜索:
您所在的位置: >
> full!screen+ 智能全屏 V1.8.1 安卓版
full!screen+ 智能全屏 V1.8.1 安卓版相当好用的智能全屏助手软件
软件大小:284.88 KB
软件类型:国产软件
软件分类: /
软件语言:简体中文
软件授权:免费软件
更新时间:
支持系统:Android/
相关链接:
相关合集:
热门专题:
手机扫一扫快捷方便下载
本类应用推荐
手机USB万能驱动,适合全部手机
一款破解wifi密码的软件
饥饿鲨进化解锁屏
一款迅雷的迷你型免会员下载版本
是一款专为移动用户打造的解压工具
一款可以让你一个手机上多个微信号的应用
是一款来电骚扰拦截应用
是一款辅助4G网络用户的应用
在线玩游戏
是国内首款大型智能ARPG游戏。
在有限的步数内消除所有的花
一款拥有奥特曼官方正版授权的休闲手游
湖南卫视《全员加速中》官方正版H5游戏来啦
以魔幻题材为背景的游戏
一款虐心游戏
踩着云不断向上跳跃,千万不要踩空哦
经典飞行射击游戏
full!screen+智能全屏是一款相当好用的智能全屏助手软件。
full!screen+智能全屏它能帮你在某些需要全屏的时候隐藏掉那些不应该出现的状态栏、虚拟按键等内容,让你感觉屏幕豁然开朗,然后通过预先设置的按键一键式还原或回复组合窗口,让你想怎么玩就怎么玩,一边聊QQ一边看电影再也不是难事了。
智能全屏full!screen+是一款能帮助用户隐藏状态栏的小应用,在一些应用中,例如视频游戏,状态栏没有被强制隐藏,碍眼又占地,通过full!screen+可以监测到它们并隐藏。
可以设置1或2个虚拟按键以帮助恢复状态栏或组合出4个自选的快捷操作,也可以设置状态栏启动以随时进入全屏。
功能说明:
使用这款智能全屏之前需要进入系统设置中开启辅助功能服务,否则软件功能会无法使用,切记;
可以随开机启动,每次开机无需繁琐地手动启动;
支持在通知栏显示通知快捷方式,方便快速隐藏/恢复系统状态栏;
可以自定义要使用全屏状态的应用程序,只在使用这些应用程序时才切换到全屏状态;
主/副两个触控区域,可以展开更多的操作选项,并且可以调整触控区域的位置;
支持扇形按钮,大大提高虚拟按键的操作效率,划出扇形菜单即可迅速点击按钮;
可以自定义触控区域被点击、按住、滑动的反馈类别(声音/振动);
可以自定义触控区域的颜色(常规/按下)。
,软件?软件下载后?飞翔小编十二分诚意等待着您的投诉与建议
APK文件怎么打开,下载APK文件如何安装到手机?推荐使用
软件无法下载
下载后无法使用
与描述不一致
2017新手游排行榜
星球大战手游排
手机军事app排
手机浏览器排行
安卓音乐播放器
梦间集游戏是一款动漫风打造的武侠类角色扮演游戏,采用众多经典的金庸武侠名著武器,喜欢这类游戏的小伙伴快来试试吧!游戏特色:1、精致的人物造型设定,融入金庸名著特色;2、新...
你可能还喜欢
手机流量是我们使用手机的重要手机使用必备产品,我们的手机只有在有流量的情况下才可以使用很多的手机软件,而现在对于手机流量的监控软件有很多种的,那么安卓手机有什么好用的流量监控工具?下面52z飞翔下载网小编为大家推荐几款好用的安卓手机流量监控软件供大家下载。
很多时候,截图软件对我们来说非常重要,系统自带的截屏功能和QQ截图虽能满足一些简单的需要,但有时候系统自带的截图软件可能满足不了你的需要,这时候可能就要下载功能强大的截图软件了。那么现在市面上的截图软件哪个好呢?52z飞翔下载网小编推荐一些好用的截图软件,提供截图软件免费下载,相信总有一款适合你!
手机上办公的人是越来越多,很多人都直接用手机解压缩文件,非常方便。现在手机解压缩软件那么多,到底哪个好呢?52z飞翔下载网在这里为大家提供一些手机解压缩软件,功能非常强大,看看有没有你需要的。
休息时间很无聊?上手机游戏大厅吧,通过手机游戏大厅可以快速找到称心如意的游戏!手机游戏大厅推荐你当下最火、最好玩的手机游戏,还可免费下载。那么手机游戏大厅有哪些?52z飞翔下载网小编来给你推荐一些热门好用的手机游戏大厅,为您提供手机游戏大厅免费下载!
相信没有人不喜欢蹭网吧,咖啡厅、KFC、餐厅等地只要有WIFI路由器有地方都可以蹭网,一款手机WIFI共享软件就可以完成你蹭网的愿望。那么wifi共享软件哪个好用呢?52z飞翔下载网这就为您提供手机WIFI共享软件下载,为了节约自己的流量还在等什么呢!
手机现在是我们日常生活中重要的工具,我们可以利用手机进行拍照,录音,存文件等,但是每个人的手机都会有一些资料或是照片不想被别人看到,这个时候就能用到手机文件加密软件了!那么,手机文件加密软件哪个好呢?52z飞翔下载网小编就为大家推荐几款手机文件加密软件下载,希望能满足大家的需求!
随着手机功能的强大化,手机连接互联网的功能日益先进,使得手机这个私密的物品会被外界入侵,甚至会丢失掉手机里的重要信息,手机安全,手机杀毒软件占有着非常重要的地位。软件是免费的,安全是自己的。现在手机上的杀毒软件也层出不穷,那么手机杀毒软件哪个好用呢?52z飞翔下载网小编今天整理出了手机安全软件排行供大家参考下载!
目前我们常说的黄页就是指电话号码簿,生活中遇到问题的时候我们可以通过相应的服务热线来解决,我们只需要在手机上安装一个手机黄页app,黄页软件集成了话费、快递、打车、挂号、等一系列生活服务,还能话费充值、交水电费.....。52z飞翔下载网!
不管是什么手机用久了都是出现卡顿甚至更严重的问题,而刷机软件,可以直接重写手机内部存储器更新手机操作系统。那么问题来了,刷机软件哪个最好呢?52z飞翔下载网小编特地给大家整理了一些好用的刷机软件,觉得能满足您的需求!
进入手机版Android(332)
在开发中,经常会遇到键盘挡住输入框的情况,比如登录界面或注册界面,弹出的软键盘把登录或注册按钮挡住了,用户必须把软键盘收起,才能点击相应按钮,这样的用户体验非常不好。像微信则直接把登录按钮做在输入框的上面,但有很多情况下,这经常满足不了需求。同时如果输入框特别多的情况下,点击输入时,当前输入框没被挡住,但是当前输入框下面的输入框却无法获取焦点,必须先把键盘收起,再去获取下面输入框焦点,这样用户体验也非常不好,那有什么办法呢?&
系统的adjustResize和adjustPan有什么区别,他们使用时的注意事项,有什么系统要求及蔽端呢?
下面对几种在开发中常用的方法进行总结:
方法一:windowSoftInputMode:adjustResize和adjustPan
主要实现方法:&
在AndroidManifest.xml对应的Activity里添加&
:windowSoftInputMode=”adjustPan”或是android:windowSoftInputMode=”adjustResize”属性&
这两种属性的区别,官方的解释是:&
这两个属性作用都是为了调整界面使键盘不挡住输入框 ,我这里对这两种属性使用场景、优缺点、注意事项进行了全方面总结,不知大家平时使用时是否注意到了。
adjustResize
需要界面本身可调整尺寸,
如在布局添加ScrollView,或输入控件属于RecycleView/ListView某一项
优点:1.不会把标题栏顶出当前布局;
2.有多项输入时,当前输入框下面的输入框可上下滑动输入&
缺点:1.需要界面本身可调整尺寸;
2. 全屏时失效
1.Activity主窗口尺寸无法调整;
2.Activity全屏
3.android5.0以上通过style设置沉浸式状态栏模式而不设置fitSystemWindow为true
非全屏或是非沉浸式状态栏输入界面,输入框比较多
页面不会重新布局,当前输入框和键盘会直接将当前输入框以上界面整体向上平移,这样即使界面包含标题栏,也会被顶上去
优点:&使用简单,不需要界面本身可调整尺寸,不会有失效情况&
缺点:&会把标题栏顶出当前布局;有多项输入时,当前输入框下面的输入框无法输入,必须收起键盘显示输入框再输入
有少量输入项,且输入量居界面上方
fitsSystemWindows
如果多个View设置了fitsSystemWindows=”true”,只有初始的view起作用,都是从第一个设置了fitsSystemWindows的view开始计算padding
优点:使用简单,需要沉浸式状态栏的界面,不需要自己计算padding状态栏的高度&
缺点:使用有限制
1.View 的其他 padding 值被重新改写了
2.手机系统版本&=android 4.4
1.界面全屏
2.设置界面主题为沉浸式状态栏
adjustResize失效情况:activity设置了全屏属性指Theme.Light.NotittleBar.Fullscreen或者设置了activity对应的主题中android:windowTranslucentStatus属性,设置方式为:android:windowTranslucentStatus=true,这时如果对应的页面上含有输入框,将会导致点击输入框时软键盘弹出后键盘覆盖输入框,导致输入框看不见。fitsSystemWindows=”true”,只有初始的view起作用:如果在布局中不是最外层控件设置fitsSystemWindows=”true”, 那么设置的那个控件高度会多出一个状态栏高度。若有多个view设置了,因第一个view已经消耗掉insect,其他view设置了也会被系统忽略。-
假设原始界面是一个LinearLayout包含若干EditText,如下图所示,在分别使用两种属性时的表现。
1?adjustPan
整个界面向上平移,使输入框露出,它不会改变界面的布局;界面整体可用高度还是屏幕高度,这个可以通过下面的截图看出,如点击输入框6,输入框会被推到键盘上方,但输入框1被顶出去了,如果界面包含标题栏,也会被顶出去。
2?adjustResize
需要界面的高度是可变的,或者说Activity主窗口的尺寸是可以调整的,如果不能调整,则不会起作用。&
例如:Activity的xml布局中只有一个LinearLayout包含若干EditText,在Activity的AndroidMainfest.xml中设置android:windowSoftInputMode=”adjustResize”属性,点击输入框6, 发现软键盘挡住了输入框6,并没有调整,如下图所示:
但使用这两种属性,我们可以总结以下几点:&
1) 使用adjustPan, 如果需要输入的项比较多时,点击输入框,当前输入项会被顶到软键盘上方,但若当前输入框下面还有输入项时,却需要先收起键盘,再点击相应的输入项才能输入。这样操作太繁琐了,对于用户体验不大好;&
2) adjustResize的使用,需要界面本身可显示的窗口内容能调整,如果不能,不起作用;
方法二:在界面最外层布局包裹ScrollView
1?只使用ScrollView
在相应界面的xml布局中,最外层添加一个ScrollView,不在AndroidMainfest.xml中设置任何android:windowSoftInputMode属性,此时点击输入框,输入框均不会被软键盘档住。即使当前输入框下方也有输入框,在键盘显示的情况下,也可以通过上下滑动界面来输入,而不用先隐藏键盘,点击下方输入框,再显示键盘输入。&
我们可以根据Android Studio的Inspect Layout工具来查看界面真正占用的布局高度,工具在&
通过该工具,我们看到:&
界面真正能用的高度=屏幕高度-状态栏高度-软键盘高度&
界面中蓝框是真正界面所用的高度:
2?ScrollView+adjustPan
我们再在该类的AndroidMainfest.xml中设置windowSoftInputMode属性为adjustPan,
&activity android:name=&.TestInputActivity&
android:windowSoftInputMode=&adjustPan&&1212
发现当前输入框不会被挡住,但是输入框比较多时,在有键盘显示时,界面上下滑动,但只能滑动部分,且如果输入框在界面靠下方时,点击输入框,标题栏也会被顶出去,如下图所示:&
我们借助Inspect Layout工具查看此设置布局可用高度,从下图可以看出,此时布局可用高度是屏幕的高度,上下滑动也只是此屏的高度,在输入框9以下的输入框滑不出来,向上滑动,也只能滑到输入框1。&
3?ScrollView+adjustResize
我们前面说过adjustResize的使用必须界面布局高度是可变的,如最外层套个ScrollView或是界面可收缩的,才起作用。这里在该类的AndroidMainfest.xml中设置windowSoftInputMode属性为adjustResize,
&activity android:name=&.TestInputActivity&
android:windowSoftInputMode=&adjustResize&&1212
发现效果和1不设置任何windowSoftInputMode属性类似,其使用高度也是:屏幕高度-状态栏高度-软键盘高度&
我们再来看看windowSoftInputMode默认属性值stateUnspecified:&
可以看出,系统将选择合适的状态,也就是在界面最外层包含一层ScrollView时,设置默认属性值stateUnspecified其实就是adjustResize属性。
但以下两方面无法满足需求:
1) 当Activity设置成全屏fullscreen模式时或是使用沉浸式状态栏时,界面最外层包裹 ScrollView,当输入框超过一屏,当前输入框下面的输入框并不能上下滑动来输入,情况类似于ScrollView+adjustPan,只能滑动部分,通过Inspect Layout也可以看到,界面可用高度是整个屏幕高度,并不会进行调整高度。即使设置adjustResize,也不起作用。&
2) 如果是类似于注册界面或是登录界面,键盘会挡住输入框下面的登录按钮。
沉浸式状态栏下
自android系统4.4(API&=19)就开始支持沉浸式状态栏,当使用觉System windows(系统窗口),显示系统一些属性和操作区域,如 最上方的状态及没有实体按键的最下方的虚拟导航栏。&
android:fitsSystemWindows=“true”会使得屏幕上的可布局空间位于状态栏下方与导航栏上方
方法三:当键盘弹起时,让界面整体上移;键盘收起,让界面整体下移
使用场景:针对界面全屏或是沉浸式状态栏,输入框不会被键盘遮挡。主要用于一些登录界面,或是需要把界面整体都顶上去的场景。
1?主要实现步骤:
(1) 获取Activity布局xml的最外层控件,如xml文件如下:
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:id=&@+id/main&
tools:context=&com.example.liubin1.softkeyboardhelper.MainActivity&&
android:id=&@+id/name&
android:hint=&请输入用户名:&
android:layout_centerInParent=&true&
android:layout_width=&match_parent&
android:layout_height=&50dp&
android:id=&@+id/pas&
android:layout_below=&@id/name&
android:hint=&请输入密码:&
android:layout_centerInParent=&true&
android:layout_width=&match_parent&
android:layout_height=&50dp&
android:id=&@+id/login_btn&
android:layout_below=&@id/rpas&
android:layout_centerHorizontal=&true&
android:text=&登录&
android:layout_width=&180dp&
android:layout_height=&50dp& /&
&/RelativeLayout&123456789101112131415161718192021222324252627282930123456789101112131415161718192021222324252627282930
先获取到最外层控件
RelativeLayout main = (RelativeLayout) findViewById(R.id.main);11
(2) 获取到最后一个控件,如上面的xml文件,最后一个控件是Button
Button login_btn = (Button) findViewById(R.id.login_btn);11
(3) 给最外层控件和最后一个控件添加监听事件
addLayoutListener(main,login_btn);
* addLayoutListener方法如下
* main 根布局
* scroll 需要显示的最下方View
public void addLayoutListener(final View main, final View scroll) {
main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
Rect rect = new Rect();
main.getWindowVisibleDisplayFrame(rect);
int mainInvisibleHeight = main.getRootView().getHeight() - rect.
if (mainInvisibleHeight & 100) {
int[] location = new int[2];
scroll.getLocationInWindow(location);
int srollHeight = (location[1] + scroll.getHeight()) - rect.
main.scrollTo(0, srollHeight);
main.scrollTo(0, 0);
}12345678910111213141516171819202122232425262728293031321234567891011121314151617181920212223242526272829303132
2?实现原理:
此方法通过监听Activity最外层布局控件来检测软键盘是否弹出,然后去手动调用控件的scrollTo方法达到调整布局目的。
方法四:监听Activity顶层View,判断软键盘是否弹起,对界面重新绘制
此方法的实现来自android中提出的issue 5497&
使用场景:针对界面全屏或是沉浸式状态栏,界面包含比较多输入框,界面即使包裹了一层ScrollView,在键盘显示时,当前输入框下面的输入不能通过上下滑动界面来输入。
一、实现步骤:
1?把SoftHideKeyBoardUtil类复制到项目中;&
2?在需要使用的Activity的onCreate方法中添加:SoftHideKeyBoardUtil.assistActivity(this);即可。
二、实现原理:
SoftHideKeyBoardUtil类具体代码如下:
* 解决键盘档住输入框
* Created by SmileXie on .
public class SoftHideKeyBoardUtil {
public static void assistActivity (Activity activity) {
new SoftHideKeyBoardUtil(activity);
private View mChildOfC
private int usableHeightP
private FrameLayout.LayoutParams frameLayoutP
private SoftHideKeyBoardUtil(Activity activity) {
FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
mChildOfContent = content.getChildAt(0);
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
private void possiblyResizeChildOfContent() {
int usableHeightNow = computeUsableHeight();
if (usableHeightNow != usableHeightPrevious) {
int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
int heightDifference = usableHeightSansKeyboard - usableHeightN
if (heightDifference & (usableHeightSansKeyboard/4)) {
frameLayoutParams.height = usableHeightSansKeyboard - heightD
frameLayoutParams.height = usableHeightSansK
mChildOfContent.requestLayout();
usableHeightPrevious = usableHeightN
private int computeUsableHeight() {
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r);
return (r.bottom - r.top);
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
它的实现原理主要是:&
(1) 找到Activity的最外层布局控件,我们知道所有的Activity都是DecorView,它就是一个FrameLayout控件,该控件id是系统写死叫R.id.content,就是我们setContentView时,把相应的View放在此FrameLayout控件里
FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);11
所以content.getChildAt(0)获取到的mChildOfContent,也就是我们用setContentView放进去的View。&
(2) 给我们的Activity的xml布局View设置一个Listener监听
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener({
possiblyResizeChildOfContent();
View.getViewTreeObserver()可以获取一个ViewTreeObserver对象——它是一个观察者,用以监听当前View树所发生的变化。这里所注册的addOnGlobalLayoutListener,就是会在当前的View树的全局布局(GlobalLayout)发生变化、或者其中的View可视状态有变化时,进行通知回调。『软键盘弹出/隐 』都能监听到。&
(3) 获取当前界面可用高度
private int computeUsableHeight() {
Rect rect = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(rect);
return (rect.bottom - rect.top);
}123456123456
如下图所示:&
(4) 重设高度, 我们计算出的可用高度,是目前在视觉效果上能看到的界面高度。但当前界面的实际高度是比可用高度要多出一个软键盘的距离的。
通过上面的这种方法,一般布局输入键盘挡住输入框的问题基本都能解决。即使界面全屏或是沉浸式状态栏情况。
下面对上面几种方法进行对比:
方法一:优点:使用简单,只需在Activity的AndroidMainfest.xml中设置windowSoftInput属性即可。&
注意点:adjustResize属性必须要界面大小可以自身改变;&
缺点:当输入框比较多时,当前输入框下方的输入框会初键盘挡住,须收起键盘再进入输入;使用adjustPan,输入框较多时,因它是把界面当成一个整体,只会显示一屏的高度,会把ActionBar顶上去。
方法二:优点:使用简单,只需在Activity的最外层布局包裹一个ScrollView即可。&
注意点:不可使用adjustPan属性,否则ScrollView失效;&
缺点:对于全屏时,在键盘显示时,无法上下滑动界面达到输入的目的;
方法三:优点:可以解决全屏时,键盘挡入按钮问题。&
缺点:只要有此需求的Activity均需要获取到最外层控件和最后一个控件,监测键盘是否弹出,再调用控件的scrollTo方法对界面整体上移或是下移。代码冗余。
方法四:优点:可以解决全屏时,键盘挡入输入框问题。只需要写一个全局类,其他有需求的界面直接在onCreate方法里调用此类的全局方法,即可。&
缺点:多用了一个类。
综上所述:&
1) 当输入框比较少时,界面只有一个输入框时,可以通过方法一设置adjustPan;&
2) 如果对于非全屏/非沉浸式状态栏需求,只需要使用方法二即可;&
3) 如果全屏全屏/沉浸式状态栏界面只有一个类有键盘挡入输入框需求,可使用方法三;&
4) 如果大部分界面均使用全屏或沉浸式状态栏,且有此需求,则选择方法四更恰当。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:107520次
积分:2328
积分:2328
排名:第16091名
原创:54篇
转载:373篇
评论:33条
(12)(20)(73)(61)(47)(89)(25)(34)(24)(26)(17)(4)当 Activity 以全屏模式运行时,如何允许 Android 系统状态栏在顶层出现,而不迫使 Activity 重新布局让出空间? - 知乎28被浏览15380分享邀请回答218 条评论分享收藏感谢收起1添加评论分享收藏感谢收起查看更多回答教程分享:如何实现Android沉浸式状态栏——教你让你的状态栏变个色!
&& 一、概述
& & & &近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图:
& & & &关于这个状态栏变色到底叫「Immersive Mode」/「Translucent Bars」有兴趣可以去了解下。
& & & &恩,接下来正题。
& & & &首先只有大于等于4.4版本支持这个半透明状态栏的效果,但是4.4和5.0的显示效果有一定的差异,所有本篇博文内容为:
& & & &如何实现半透明状态栏效果在大于4.4版本之上。
& & & &如何让4.4的效果与5.0的效果尽可能一致。
& & & &看了不少参考文章,都介绍到这个库,大家可以了解:SystemBarTint。
& & & &不过本篇博文并未基于此库,自己想了个hack,对于此库源码有空再看了。
& & & &二、效果图
& & & &先贴下效果图,以便和实现过程中做下对比
& & & &4.4 模拟器
& & & 5.x 真机
& & & &ok,有了效果图之后就开始看实现了。
& & & &三、实现半透明状态栏
& & & &因为本例使用了NavigationView,所以布局代码稍多,当然如果你不需要,可以自己进行筛减。
& & & &注意引入相关依赖:
compile&'com.android.support:appcompat-v7:22.2.1'&&
compile&'com.android.support:support-v4:22.2.1'&&
compile&'com.android.support:design:22.2.0'&&
& & & (一)colors.xml 和 styles.xml
& & & &首先我们定义几个颜色:
& & & &res/values/color.xml
XML/HTML代码
&?xml&version="1.0"&encoding="utf-8"?&&&
&resources&&&
&&&&&color&name="primary"&#FF03A9F4&/color&&&
&&&&&color&name="primary_dark"&#FF0288D1&/color&&&
&&&&&color&name="status_bar_color"&@color/primary_dark&/color&&&
&/resources&&&
& & & &下面定义几个styles.xml
& & & &注意文件夹的路径:
& & & &values/styles.xml
XML/HTML代码
&resources&&&
&&&&&style&name="BaseAppTheme"&parent="Theme.AppCompat.Light.NoActionBar"&&&
&&&&&&&&&!--&Customize&your&theme&here.&--&&&
&&&&&&&&&item&name="colorPrimary"&@color/primary&/item&&&
&&&&&&&&&item&name="colorPrimaryDark"&@color/primary_dark&/item&&&
&&&&&&&&&item&name="colorAccent"&#FF4081&/item&&&
&&&&&/style&&&
&&&&&!--&Base&application&theme.&--&&&
&&&&&style&name="AppTheme"&parent="@style/BaseAppTheme"&&&
&&&&&/style&&&
&/resources&&&
& & & &values-v19
XML/HTML代码
&resources&&&
&&&&&style&name="AppTheme"&parent="@style/BaseAppTheme"&&&
&&&&&&&&&item&name="android:windowTranslucentStatus"&true&/item&&&
&&&&&/style&&&
&/resources&&&
& & & &ok,这个没撒说的。注意我们的主题是基于NoActionBar的,android:windowTranslucentStatus这个属性是v19开始引入的。
& & & (二)布局文件
& & & &activity_main.xml
XML/HTML代码
&android.support.v4.widget.DrawerLayout&&
&&&&xmlns:android="/apk/res/android"&&
&&&&xmlns:app="/apk/res-auto"&&
&&&&xmlns:tools="/tools"&&
&&&&android:layout_width="match_parent"&&
&&&&android:layout_height="match_parent"&&
&&&&&LinearLayout&&
&&&&&&&&android:id="@+id/id_main_content"&&
&&&&&&&&android:layout_width="match_parent"&&
&&&&&&&&android:layout_height="match_parent"&&
&&&&&&&&android:orientation="vertical"&&&
&&&&&&&&&android.support.v7.widget.Toolbar&&
&&&&&&&&&&&&android:id="@+id/id_toolbar"&&
&&&&&&&&&&&&android:layout_width="match_parent"&&
&&&&&&&&&&&&android:layout_height="wrap_content"&&
&&&&&&&&&&&&android:background="?attr/colorPrimary"&&
&&&&&&&&&&&&android:fitsSystemWindows="true"&&
&&&&&&&&&&&&app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/&&&
&&&&&&&&&TextView&&
&&&&&&&&&&&&android:id="@+id/id_tv_content"&&
&&&&&&&&&&&&android:layout_width="match_parent"&&
&&&&&&&&&&&&android:layout_height="0dp"&&
&&&&&&&&&&&&android:layout_weight="1"&&
&&&&&&&&&&&&android:gravity="center"&&
&&&&&&&&&&&&android:text="HelloWorld"&&
&&&&&&&&&&&&android:textSize="30sp"/&&&
&&&&&/LinearLayout&&&
&&&&&android.support.design.widget.NavigationView&&
&&&&&&&&android:id="@+id/id_nv_menu"&&
&&&&&&&&android:layout_width="match_parent"&&
&&&&&&&&android:layout_height="match_parent"&&
&&&&&&&&android:layout_gravity="start"&&
&&&&&&&&android:fitsSystemWindows="true"&&
&&&&&&&&app:headerLayout="@layout/header_just_username"&&
&&&&&&&&app:menu="@menu/menu_drawer"&&
&&&&&&&&/&&&
&/android.support.v4.widget.DrawerLayout&&&
& & & &DrawerLayout内部一个LinearLayout作为内容区域,一个NavigationView作为菜单。&
& & & &注意下Toolbar的高度设置为wrap_content。
& & & &然后我们的NavigationView中又依赖一个布局文件和一个的文件。
& & & &header_just_username.xml
XML/HTML代码
&?xml&version="1.0"&encoding="utf-8"?&&&
&RelativeLayout&xmlns:android="/apk/res/android"&&
&&&&&&&&&&&&&&&&android:layout_width="match_parent"&&
&&&&&&&&&&&&&&&&android:layout_height="192dp"&&
&&&&&&&&&&&&&&&&android:background="?attr/colorPrimaryDark"&&
&&&&&&&&&&&&&&&&android:orientation="vertical"&&
&&&&&&&&&&&&&&&&android:padding="16dp"&&
&&&&&&&&&&&&&&&&android:fitsSystemWindows="true"&&
&&&&&&&&&&&&&&&&android:theme="@style/ThemeOverlay.AppCompat.Dark"&&&
&&&&&TextView&&
&&&&&&&&android:id="@+id/id_link"&&
&&&&&&&&android:layout_width="wrap_content"&&
&&&&&&&&android:layout_height="wrap_content"&&
&&&&&&&&android:layout_alignParentBottom="true"&&
&&&&&&&&android:layout_marginBottom="16dp"&&
&&&&&&&&android:text="http://blog.csdn.net/lmj"/&&&
&&&&&TextView&&
&&&&&&&&android:id="@+id/id_username"&&
&&&&&&&&android:layout_width="wrap_content"&&
&&&&&&&&android:layout_height="wrap_content"&&
&&&&&&&&android:layout_above="@id/id_link"&&
&&&&&&&&android:text="Zhang&Hongyang"/&&&
&&&&&ImageView&&
&&&&&&&&android:layout_width="72dp"&&
&&&&&&&&android:layout_height="72dp"&&
&&&&&&&&android:layout_above="@id/id_username"&&
&&&&&&&&android:layout_marginBottom="16dp"&&
&&&&&&&&android:src="@mipmap/ic_launcher"/&&&
&/RelativeLayout&&&
& & & &menu的文件就不贴了,更加详细的可以去参考Android 自己实现 NavigationView [Design Support Library(1)]。
& & & &大体看完布局文件以后,有几个点要特别注意:
& & & &o&ToolBar高度设置为wrap_content
& & & &o&ToolBar添加属性android:fitsSystemWindows="true"
& & & &o&header_just_username.xml的跟布局RelativeLayout,添加属性android:fitsSystemWindows="true"
& & & &android:fitsSystemWindows这个属性,主要是通过调整当前设置这个属性的view的padding去为我们的status_bar留下空间。
& & & &根据上面的解释,如果你不写,那么状态栏和Toolbar就会有挤一块的感觉了,类似会这样:
& & & &ok,最后看下代码。
& & & &(三)Activity的代码
package&com.zhy.&&
import&android.os.B&&
import&android.support.v7.app.AppCompatA&&
import&android.support.v7.widget.T&&
public&class&MainActivity&extends&AppCompatActivity&&
&&&&@Override&&
&&&&protected&void&onCreate(Bundle&savedInstanceState)&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&setContentView(R.layout.activity_main);&&
&&&&&&&&Toolbar&toolbar&=&(Toolbar)&findViewById(R.id.id_toolbar);&&
&&&&&&&&setSupportActionBar(toolbar);&&
&&&&&&&&//pat(this,&getResources().getColor(R.color.status_bar_color));&&
&&&&&&&&//pat(this);&&
& & & &没撒说的,就是setSupportActionBar。
& & & &那么现在4.4的效果图是:
& & & &其实还不错,有个渐变的效果。
& & & &现在5.x的效果:
& & & &可以看到5.x默认并非是一个渐变的效果,类似是一个深一点的颜色。
& & & &再看看我们md的规范
& & & &状态栏应该是一个比Toolbar背景色,稍微深一点的颜色。
& & & &这么看来,我们还是有必要去为4.4做点适配工作,让其竟可能和5.x显示效果一致,或者说尽可能符合md的规范。
& & & &四、调整4.4的显示方案
& & & &那么问题来了?如何做呢?
& & & &咱们这么看,4.4之后加入windowTranslucentStatus的属性之后,也就是我们可以用到状态栏的区域了。
& & & &既然我们可以用到这块区域,那么我们只要在根布局去设置一个与状态栏等高的View,设置背景色为我们期望的颜色就可以了。
& & & &于是有了以下的代码:
package&com.zhy.&&
import&android.annotation.TargetA&&
import&android.app.A&&
import&android.content.C&&
import&android.graphics.C&&
import&android.os.B&&
import&android.view.V&&
import&android.view.ViewG&&
&*&Created&by&zhy&on&15/9/21.&
public&class&StatusBarCompat&&
&&&&private&static&final&int&INVALID_VAL&=&-1;&&
&&&&private&static&final&int&COLOR_DEFAULT&=&Color.parseColor("#");&&
&&&&@TargetApi(Build.VERSION_CODES.LOLLIPOP)&&
&&&&public&static&void&compat(Activity&activity,&int&statusColor)&&
&&&&&&&&if&(Build.VERSION.SDK_INT&&=&Build.VERSION_CODES.LOLLIPOP)&&
&&&&&&&&{&&
&&&&&&&&&&&&if&(statusColor&!=&INVALID_VAL)&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&activity.getWindow().setStatusBarColor(statusColor);&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&
&&&&&&&&}&&
&&&&&&&&if&(Build.VERSION.SDK_INT&&=&Build.VERSION_CODES.KITKAT&&&&Build.VERSION.SDK_INT&&&Build.VERSION_CODES.LOLLIPOP)&&
&&&&&&&&{&&
&&&&&&&&&&&&int&color&=&COLOR_DEFAULT;&&
&&&&&&&&&&&&ViewGroup&contentView&=&(ViewGroup)&activity.findViewById(android.R.id.content);&&
&&&&&&&&&&&&if&(statusColor&!=&INVALID_VAL)&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&color&=&statusC&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&View&statusBarView&=&new&View(activity);&&
&&&&&&&&&&&&ViewGroup.LayoutParams&lp&=&new&ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,&&
&&&&&&&&&&&&&&&&&&&&getStatusBarHeight(activity));&&
&&&&&&&&&&&&statusBarView.setBackgroundColor(color);&&
&&&&&&&&&&&&contentView.addView(statusBarView,&lp);&&
&&&&&&&&}&&
&&&&public&static&void&compat(Activity&activity)&&
&&&&&&&&compat(activity,&INVALID_VAL);&&
&&&&public&static&int&getStatusBarHeight(Context&context)&&
&&&&&&&&int&result&=&0;&&
&&&&&&&&int&resourceId&=&context.getResources().getIdentifier("status_bar_height",&"dimen",&"android");&&
&&&&&&&&if&(resourceId&&&0)&&
&&&&&&&&{&&
&&&&&&&&&&&&result&=&context.getResources().getDimensionPixelSize(resourceId);&&
&&&&&&&&}&&
&&&&&&&&return&&&
& & & &代码的思路很简单,根据找到android.R.content,在其中添加一个(高度为statusbarHeight,背景色为我们设置的颜色,默认为半透明的黑色)。
& & & &那么只需要在Activity里面去写上:
pat(this);&&
& & & &就可以了。
& & & &如果你希望自己设置状态看颜色,那么就用这个方法:
pat(this,&getResources().getColor(R.color.status_bar_color));&&
& & & &这样的话我们就解决了4.4到5.x的适配问题,一行代码解决,感觉还是不错的。
& & & &最后提一下,对于5.0由于提供了setStatusBarColor去设置状态栏颜色,但是这个方法不能在主题中设置windowTranslucentStatus属性。所以,可以编写一个value-v21文件夹,里面styles.xml写入:
XML/HTML代码
&resources&&&
&&&&&!--&Base&application&theme.&--&&&
&&&&&style&name="AppTheme"&parent="@style/BaseAppTheme"&&&
&&&&&/style&&&
&/resources&&&
& & & &其实就是不要有windowTranslucentStatus属性。
& & & &接下来,对于默认的效果就不测试了,参考上面的效果图。
& & & &我们测试个设置状态栏颜色的,我们这里设置个红色。
& & & &4.4 模拟器
& & & &5.x 真机
& & & &ok,这样就结束啦~~
《爱加密》Android apk加密保护视频教程剪辑:
&源码地址:
& & & &其实就是不要有windowTranslucentStatus属性。
项目分享:移动商城_微信小程序
源代码下载(百度网盘): &
功能包括:商品橱窗,购物车,结账等功能
这个不错,花了半天看了这些代码,比较规范,很好的学习范例

我要回帖

更多关于 安卓微信 视频全屏 h5 的文章

 

随机推荐