(沉浸式)
在此相信大家都了解什么是沉浸式状态栏了;目前打开很多APP都会有这种效果,可想而知,沉浸式状态栏还是挺实用的!
二、使用沉浸式状态栏高仿QQ:
实现沉浸式状态栏的步骤灰常简单:因为沉浸式状态栏是Android4.4后才推出的,所以首先在程序中加上判断,即:当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏,接着在语句中设置状态栏和导航栏为透明即可:
//当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}最后在布局文件中加上、、、
android:fitsSystemWindows="true"android:clipToPadding="true"这样就实现沉浸式状态栏了!
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical"tools:context=".MainActivity"> <RelativeLayoutandroid:fitsSystemWindows="true"android:clipToPadding="true"android:layout_width="match_parent"android:layout_height="80dp"android:background="#0099cc"><de.hdodenhof.circleimageview.CircleImageView android:id="@+id/img_head" android:layout_width="40dp" android:layout_height="40dp" android:layout_gravity="center_horizontal" android:layout_marginTop="13dp" android:layout_marginLeft="15dp" app:civ_border_width="2dp" app:civ_border_color="#FFFFFF" android:src="@mipmap/meinv"></de.hdodenhof.circleimageview.CircleImageView><TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="26dp" android:layout_centerHorizontal="true" android:text="联系人" android:textColor="@android:color/white" android:textSize="18sp" /><TextView android:id="@+id/tv_right_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="26dp" android:layout_marginRight="15dp" android:layout_alignParentRight="true" android:text="添加" android:textColor="@android:color/white" android:textSize="18sp" /> </RelativeLayout> <TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="沉浸式状态栏"android:textSize="22sp"android:background="#E0FFFF"/></LinearLayout>MainActivity中:
package com.zsml.chaotranstintbar;import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);//当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);} }}实现沉浸式状态栏的其他方法:动态加入、第三方库。
import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.LinearLayout;import java.lang.reflect.Field;public class TwoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//去掉标题this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_two);//当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); LinearLayout linear_bar=(LinearLayout)findViewById(R.id.linear_bar); linear_bar.setVisibility(View.VISIBLE); int statusHeight=getStatusBarHeight(); LinearLayout.LayoutParams params=(LinearLayout.LayoutParams )linear_bar.getLayoutParams(); params.height=statusHeight; linear_bar.setLayoutParams(params);} } /*** 获取状态栏的高度* @return*/ private int getStatusBarHeight(){try{ Class<?> c=Class.forName("com.android.internal.R$dimen"); Object obj=c.newInstance(); Field field=c.getField("status_bar_height"); int x=Integer.parseInt(field.get(obj).toString()); return getResources().getDimensionPixelSize(x);}catch(Exception e){ e.printStackTrace();}return 0; }}这样就完事了,是不是一样那么简单、、、
android:fitsSystemWindows="true"android:clipToPadding="true"MainActivity中实现:import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;import com.readystatesoftware.systembartint.SystemBarTintManager;public class ThreeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_three);//当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); SystemBarTintManager tintManager = new SystemBarTintManager(this); // 激活状态栏 tintManager.setStatusBarTintEnabled(true); // enable navigation bar tint 激活导航栏 tintManager.setNavigationBarTintEnabled(true); //设置系统栏设置颜色 //tintManager.setTintColor(R.color.red); //给状态栏设置颜色 tintManager.setStatusBarTintResource(R.color.middle_color); // 设置导航栏设置资源 tintManager.setNavigationBarTintResource(R.color.androidColorE);} }}都是大同小异来的,我个人觉得第一种方法是最好实现和理解的,大家都可以尝试一下,希望对你们有所帮助!最后贴出沉浸式状态栏-高仿QQ的效果图如下:
以上所述是小编给大家介绍的Android 高仿QQ 沉浸式状态栏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!