安卓怎么有iphone状态栏
‘壹’ android浠縤phone鐘舵佹爮鐣岄溃
鍙浠ヤ笅杞戒竴涓鍙钬渋OS7鐘舵佹爮钬濈殑杞浠跺疄鐜般
IOS7鐘舵佹爮鏄涓涓猧OS7/iOS6椋庢牸镄勭姸镐佹爮镄勫簲鐢ㄧ▼搴忋傞叿镀廼OS鐘舵佹爮镄刄I銆备娇鐢ㄨ捣𨱒ラ潪甯哥亩鍗曪纴涓嶉渶瑕佸畨瑁呬换浣曞叾浠栫涓夋柟搴旂敤绋嫔簭銆
鐗圭偣锛
- 鏀鎸佹墍链塱OS 7/iOS镄勯庢牸銆
- 閰穒Phone椋庢牸镄刄I銆
- 鏀鎸佹柊镄勯氱煡璀︽姤镀廼OS 7銆
- 鏄剧ず鍗¤创/ WIFI /钃濈堕/ GPS /镞嬭浆/镞堕挓鐘舵併
- 镊瀹氢箟鑳屾櫙镩蹭负姣忎釜搴旂敤绋嫔簭镄勭姸镐佹爮銆
- 镊瀹氢箟缃戠粶杩愯惀鍟嗙殑钖嶅瓧銆
- 鏄剧ず鐘舵佹爮涓婃墍链夌殑搴旂敤绋嫔簭阃氱煡銆
‘贰’ 安卓手机要肿么弄成iPhone状态栏,已root。
沉浸式通知栏Android4.4以上才支持的新特性。
具体实现方式如下:
1.新建个公共style,设置android:fitsSystemWindows=true
<!-- 设置应用布局时是否考虑系统窗口布局;true --> <style name="AppBaseTheme" parent="android:Theme.Light.NoTitleBar"> <item name="android:fitsSystemWindows">true</item> </style>
2. 修改AndroidManifest.xml,让所有的activity样式默认设置为AppBaseTheme(*不同项目要灵活处理,笔者项目的activity样式都是统一的所以这样设置没问题,但是实际情况下不同的activity可能调用的样式不一样,需要读者自行按自己的项目来设置)
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppBaseTheme" android:name="****">
3.新增沉浸式通知栏实现类,实现原理很简单。
1)判断当前系统版本是不是4.4以上,判断代码如下:
if (VERSION.SDK_INT >= VERSION_CODES.KITKAT)
2)如果大于4.4则设置状态栏透明化,代码如下:
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
3)获取activity的根rootView(DecorView),然后创建一个新的view stateBarView并把它添加到rootView(这里手动给它设置个ID,下次进来时先判断rootView是否已创建stateBarView,如果已创建则直接获取该View这样可以防止重复创建,导致内存泄露)
以下是具体代码实现:
import android.annotation.SuppressLint;import android.app.Activity;import android.content.res.Resources;import android.graphics.drawable.Drawable;import android.os.Build;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.WindowManager;import android.widget.FrameLayout.LayoutParams;/** * 沉浸式通知栏公共类 * @author hurrican * */@SuppressLint({ "InlinedApi", "ResourceAsColor" })public class ImmersedNotificationBar { private Activity activity ; //设置沉浸式通知栏的ID(防止重复创建) private final static int IMMERSED_NOTIFICATION_BAR_ID = 12345678 ; private final static String STATUS_BAR_HEIGHT_RES_NAME = "status_bar_height" ; public ImmersedNotificationBar(Activity activity){ this.activity = activity ; } //获取状态栏高度 private int getStatusBarHeight(Resources res){ int statusBarHeight = 0; int resourceId = res.getIdentifier(STATUS_BAR_HEIGHT_RES_NAME, "dimen", "android"); if (resourceId > 0) { statusBarHeight = res.getDimensionPixelSize(resourceId); } return statusBarHeight ; } //添加顶部状态栏 private View addStateBar(Activity activity,ViewGroup rootView,int statusBarHeight){ //创建新的View,并添加到rootView顶部) View statusBarView ; if(null!=rootView.findViewById(IMMERSED_NOTIFICATION_BAR_ID)){ statusBarView = rootView.findViewById(IMMERSED_NOTIFICATION_BAR_ID); }else{ statusBarView = new View(activity); rootView.addView(statusBarView); } statusBarView.setId(IMMERSED_NOTIFICATION_BAR_ID) ; LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,statusBarHeight); params.gravity = Gravity.TOP; statusBarView.setLayoutParams(params); statusBarView.setVisibility(View.VISIBLE); return statusBarView ; } /** * 设置状态栏颜色 * @param ColorId */ public void setStateBarColor(int ColorId){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = activity.getWindow(); //activity的顶级布局 ViewGroup rootView = (ViewGroup) window.getDecorView(); //透明化状态栏 window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); Resources res = activity.getResources(); //获取状态栏目的高度 int statusBarHeight = getStatusBarHeight(res); View stateBarView = addStateBar(activity,rootView,statusBarHeight) ; stateBarView.setBackgroundColor(ColorId) ; } } /** * 设置状态栏颜色 * @param ColorId */ public void setStateBarDrawable(Drawable drawable){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = activity.getWindow(); //activity的顶级布局 ViewGroup rootView = (ViewGroup) window.getDecorView(); //透明化状态栏 window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); Resources res = activity.getResources(); //获取状态栏目的高度 int statusBarHeight = getStatusBarHeight(res); View stateBarView = addStateBar(activity,rootView,statusBarHeight) ; stateBarView.setBackgroundDrawable(drawable) ; } }}
‘叁’ 小米手机怎么把状态栏设置成iPhone那样
1、小米手机运行的是MIUI系统,该系统自带主题风格应用,因此用户可以进入主题风格里面选择一款ios风格的主题,下载并应用到手机上,即可实现状态栏和iphone手机的状态栏相似。
2、MIUI(米柚)是小米科技旗下基于Android操作系统所开发的ROM(刷机所用的镜像),专为中国人习惯设计,全面改进原生体验,能够带给国内用户更为贴心的Android智能手机体验。MIUI发布五年来,研发团队达750人,每周升级已经累计发布249个版本,拥有激活用户1.5亿,遍布156个国家和地区、32种语言。