温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现仿ios状态栏颜色和标题栏颜色一致

发布时间:2021-07-21 14:26:32 来源:亿速云 阅读:298 作者:小新 栏目:移动开发

这篇文章将为大家详细讲解有关如何实现仿ios状态栏颜色和标题栏颜色一致,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

首先创建一个工具类

import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.os.Build; import android.support.v4.content.ContextCompat; import android.view.View; import android.view.ViewGroup; public class StatusBarCompat {  private static final int INVALID_VAL = -1;  //判断版本  @TargetApi(Build.VERSION_CODES.LOLLIPOP)  public static View compat(Activity activity, int statusColor) {   //默认颜色   int color = ContextCompat.getColor(activity, R.color.colorPrimaryDark);   //若果版本大于等于21 给状态栏设置颜色   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {    if (statusColor != INVALID_VAL) {     color = statusColor;    }    activity.getWindow().setStatusBarColor(color);    return null;   }   //如果版本在大于等于19小于21   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT     && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {    //获取contentView    ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);    if (statusColor != INVALID_VAL) {     color = statusColor;    }    //获取contentView里的第一个view 也就是状态栏    View statusBarView = contentView.getChildAt(0);    if (statusBarView != null && statusBarView.getMeasuredHeight() == getStatusBarHeight(activity)) {     statusBarView.setBackgroundColor(color);     return statusBarView;    }    statusBarView = new View(activity);    ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,      getStatusBarHeight(activity));    statusBarView.setBackgroundColor(color);    contentView.addView(statusBarView, lp);    return statusBarView;   }   return null;  }  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 result;  } }

然后在activity里调用方法

import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.os.Build; import android.view.WindowManager; public class MainActivity extends AppCompatActivity {  protected boolean statusBarCompat = true;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   if (statusBarCompat) {    StatusBarCompat.compat(this, ContextCompat.getColor(this, R.color.colorPrimary));    transparent19and20();   }  }  protected void transparent19and20() {   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT     && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);   }  } }

关于“如何实现仿ios状态栏颜色和标题栏颜色一致”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios
AI