欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 高仿QQ 沉浸式狀態(tài)欄

 更新時(shí)間:2016年12月21日 16:55:39   作者:zsml2016  
這篇文章主要介紹了Android 高仿QQ 沉浸式狀態(tài)欄的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

前言:

在進(jìn)入今天正題前,還是老樣子先談?wù)劯邢氚桑罱杏X(jué)整個(gè)都失去了方向感,好迷茫!找工作又失敗了,難道Android真的飽和了?這兩天我一直沒(méi)出門(mén),除了下樓哪外賣(mài)就是宅宿舍了,靜想了許久,我還是不能忘了初心,我相信我找不到工作的原因有很多,最關(guān)鍵的還是要技術(shù)夠硬才行啊,奔跑吧孩子!接下來(lái)我就給大家介紹怎樣快速打造沉浸式狀態(tài)欄吧,雖然感覺(jué)有點(diǎn)相見(jiàn)恨晚,但其實(shí)不完!

一:何為沉浸式狀態(tài)欄?

沉浸式狀態(tài)欄是Google從Android 4.4開(kāi)始,給我們開(kāi)發(fā)者提供的一套能透明的系統(tǒng)ui樣式,這樣樣式是給狀態(tài)欄和導(dǎo)航欄的,這樣的話就不用向以前那樣每天面對(duì)著黑乎乎的上下兩條黑欄了,還可以調(diào)成跟Activity一樣的樣式,形成一個(gè)完整的主題,和IOS7.0以上系統(tǒng)一樣了。

先給你們來(lái)對(duì)比一下加了沉浸式和沒(méi)加沉浸式的樣式效果圖吧,如下圖所示:

 (非沉浸式)

 (沉浸式)

在此相信大家都了解什么是沉浸式狀態(tài)欄了;目前打開(kāi)很多APP都會(huì)有這種效果,可想而知,沉浸式狀態(tài)欄還是挺實(shí)用的!

二、使用沉浸式狀態(tài)欄高仿QQ:

實(shí)現(xiàn)沉浸式狀態(tài)欄的步驟灰常簡(jiǎn)單:因?yàn)槌两綘顟B(tài)欄是Android4.4后才推出的,所以首先在程序中加上判斷,即:當(dāng)系統(tǒng)版本為4.4或者4.4以上時(shí)可以使用沉浸式狀態(tài)欄,接著在語(yǔ)句中設(shè)置狀態(tài)欄和導(dǎo)航欄為透明即可:

//當(dāng)系統(tǒng)版本為4.4或者4.4以上時(shí)可以使用沉浸式狀態(tài)欄
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
 //透明狀態(tài)欄
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
 //透明導(dǎo)航欄
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}

最后在布局文件中加上、、、

android:fitsSystemWindows="true"
android:clipToPadding="true"

這樣就實(shí)現(xiàn)沉浸式狀態(tài)欄了!

就是這么簡(jiǎn)單,就是這么耐使!源碼是最好的導(dǎo)師,快看看整體代碼吧:

xml布局文件:

<?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">
 <RelativeLayout
  android: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="聯(lián)系人"
   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>
 <TextView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center"
  android:text="沉浸式狀態(tài)欄"
  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);
  //當(dāng)系統(tǒng)版本為4.4或者4.4以上時(shí)可以使用沉浸式狀態(tài)欄
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   //透明狀態(tài)欄
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
   //透明導(dǎo)航欄
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
  }
 }
}

實(shí)現(xiàn)沉浸式狀態(tài)欄的其他方法:動(dòng)態(tài)加入、第三方庫(kù)。

1、動(dòng)態(tài)實(shí)現(xiàn):

動(dòng)態(tài)實(shí)現(xiàn)也是比較簡(jiǎn)單的,首先是隱藏布局,最后動(dòng)態(tài)計(jì)算狀態(tài)欄高度并設(shè)置,都是在MainActivity中操作的,布局文件也就不用加上 Android:fitsSystemWindows="true"、  android:clipToPadding="true" 這兩句了!

所以直接給源碼吧:

MainActivity中:

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);
  //去掉標(biāo)題
  this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.activity_two);
  //當(dāng)系統(tǒng)版本為4.4或者4.4以上時(shí)可以使用沉浸式狀態(tài)欄
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   //透明狀態(tài)欄
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
   //透明導(dǎo)航欄
   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);
  }
 }
 /**
  * 獲取狀態(tài)欄的高度
  * @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;
 }
}

這樣就完事了,是不是一樣那么簡(jiǎn)單、、、

2、第三方庫(kù)實(shí)現(xiàn)(SystemBarTint):

SystemBarTint是開(kāi)源到github上的一個(gè)開(kāi)源庫(kù)來(lái)的;

地址:https://github.com/jgilfelt/SystemBarTint

使用步驟:

關(guān)聯(lián)庫(kù):compile'com.readystatesoftware.systembartint:systembartint:1.0.3'

xml布局中添加:

android:fitsSystemWindows="true"
android:clipToPadding="true"
MainActivity中實(shí)現(xiàn):
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);
  //當(dāng)系統(tǒng)版本為4.4或者4.4以上時(shí)可以使用沉浸式狀態(tài)欄
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   //透明狀態(tài)欄
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
   //透明導(dǎo)航欄
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
   SystemBarTintManager tintManager = new SystemBarTintManager(this);
   // 激活狀態(tài)欄
   tintManager.setStatusBarTintEnabled(true);
   // enable navigation bar tint 激活導(dǎo)航欄
   tintManager.setNavigationBarTintEnabled(true);
   //設(shè)置系統(tǒng)欄設(shè)置顏色
   //tintManager.setTintColor(R.color.red);
   //給狀態(tài)欄設(shè)置顏色
   tintManager.setStatusBarTintResource(R.color.middle_color);
   // 設(shè)置導(dǎo)航欄設(shè)置資源
   tintManager.setNavigationBarTintResource(R.color.androidColorE);
  }
 }
}

都是大同小異來(lái)的,我個(gè)人覺(jué)得第一種方法是最好實(shí)現(xiàn)和理解的,大家都可以嘗試一下,希望對(duì)你們有所幫助!最后貼出沉浸式狀態(tài)欄-高仿QQ的效果圖如下:

以上所述是小編給大家介紹的Android 高仿QQ 沉浸式狀態(tài)欄,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論