android风格统一化修改上方标题栏颜色
16lz
2021-01-26
又是忙了很久才有时间,这次我来说一下,android风格统一化修改上方标题栏颜色,
修改颜色后能达到与背景图片的颜色一致,风格一致,下面我们来看一张图
很明显,这个图中的标题栏颜色是红色,这里我为了测试所以做了一个很显眼的颜色,有些软件中需要使标题栏改变成相应的颜色,即风格与app背景颜色统一化,所以这个时候就需要这个样子的设置了。首先,先了解这个东西:
SystemBarTint开源项目
地址:https://github.com/jgilfelt/SystemBarTint
有了这个开源项目后我们很快就能设置颜色了,在这之前先要编辑一个颜色文件,在res/value/文件夹下新建color文件,然后编辑下颜色:
Xml文件:
<?xml version="1.0" encoding="utf-8"?> #ff0000
之后把开源项目中的SystemBarTintManager粘贴到你的工程中,我这里新建了一个工具类来循环调用。
Java代码:
package com.example.demo;import android.annotation.TargetApi;import android.app.Activity;import android.os.Build;import android.view.Window;import android.view.WindowManager;/*** * 改变系统标题栏颜色类 * @author Administrator * */public class X_SystemBarUI {/** * 改变系统标题栏颜色 * @param activity * @param color color xml文件下的颜色 */public static void initSystemBar(Activity activity, int color) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {setTranslucentStatus(activity, true);}SystemBarTintManager tintManager = new SystemBarTintManager(activity);tintManager.setStatusBarTintEnabled(true);// 使用颜色资源tintManager.setStatusBarTintResource(color);}/** * 设置系统标题栏的透明度 * @param activity * @param on */@TargetApi(19)private static void setTranslucentStatus(Activity activity, boolean on) {Window win = activity.getWindow();WindowManager.LayoutParams winParams = win.getAttributes();final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;if (on) {winParams.flags |= bits;} else {winParams.flags &= ~bits;}win.setAttributes(winParams);}}
写好工具类之后就可以进行设置了,设置的方法很简单,也很方便
X_SystemBarUI.initSystemBar(Activity activity, int color);
在你想要设置颜色的Activity的onCreate方法下写好就可以了。
MainActivity
package com.example.demo;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);X_SystemBarUI.initSystemBar(this, R.color.color);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}
这样就完成了,简单而且快捷,动手试试看吧。
Demo下载
更多相关文章
- Android高仿微信图片多选功能
- android 中的两个文件夹res/raw和assets
- Android(安卓)显示GIF图片实例详解
- 记一次Build.gradle引发的ClassNotFound
- Android中弹窗中带有Edittext,软键盘遮挡问题
- Android(安卓)API Guides---Data Storage
- android 属性系统,SystemProperties 的简介---转载
- Android客户端请求服务端资源(HttpURLConnection和输入流实现)
- Android中显示GIF动画的实现代码