導航:首頁 > 編程語言 > android50沉浸代碼

android50沉浸代碼

發布時間:2021-02-28 02:05:05

『壹』 android開發 如何設計開啟全屏沉浸模式

全屏沉浸模式通過設置下面的標記位實現:

java">varuiOpts=uiOpts=SystemUiFlags.LayoutStable
|SystemUiFlags.LayoutHideNavigation
|SystemUiFlags.LayoutFullscreen
|SystemUiFlags.Fullscreen
|SystemUiFlags.HideNavigation
|SystemUiFlags.Immersive;
Window.DecorView.SystemUiVisibility=uiOpts;

在內沉浸模式下, 應用容占據屏幕的全部空間, 只有當用戶從屏幕的上方邊沿處向下劃動時, 才會退出沉浸 模式, 用戶觸摸屏幕其它部分是, 不會退出該模式, 這種模式比較適用於閱讀器、 雜志類應用。

『貳』 如何實現Android沉浸式狀態欄

方法一:系統的方式沉浸式狀態欄實現
1、//當系統版本為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);
}
2、布局加入:
android:fitsSystemWindows="true"
android:clipToPadding="true"

方法二:實現思路,添加隱藏布局,然後我們動態的計算狀態欄的高度,然後把這個高度設置成這個隱藏的布局的高度,便可以實現
/**
* 通過反射的方式獲取狀態欄高度
*
* @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;
}

方法三、用的github上的第三方庫
1.庫地址:github.com/jgilfelt/SystemBarTint
2.添加依賴庫:
compile 『com.readystatesoftware.systembartint:systembartint:1.0.3』
3、 android:fitsSystemWindows="true"
android:clipToPadding="true
4、 SystemBarTintManager tintManager = new SystemBarTintManager(this);
// 激活狀態欄
tintManager.setStatusBarTintEnabled(true);
// enable navigation bar tint 激活導航欄
tintManager.setNavigationBarTintEnabled(true);
//設置系統欄設置顏色
//tintManager.setTintColor(R.color.red);
//給狀態欄設置顏色
tintManager.setStatusBarTintResource(R.color.mask_tags_1);
//Apply the specified drawable or color resource to the system navigation bar.
//給導航欄設置資源
tintManager.setNavigationBarTintResource(R.color.mask_tags_1);

『叄』 android開發怎麼設置50%透明度

看你要在什麼地方調用,經常使用得是使用顏色值為背景時,可以回這樣設置:比如答紅色:#FF0000,要50%的透明度,可以設置顏色值為:#7FFF0000,前面兩位表示50的透明度,也可以通過調用控制項的setAlpha(0.5f);

『肆』 android 4.0怎麼實現沉浸式狀態欄

步奏一
//當系統版本為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);
}
1234567812345678

步奏權二
布局加入:
android:fitsSystemWindows="true"
android:clipToPadding="true"

『伍』 android 沉浸式影響所有的activity嗎

沉浸式狀態欄的來源就是很多手機用的是實體按鍵,沒有虛擬鍵,於是開了沉浸模式就只有狀態欄消失了。於是沉浸模式成了沉浸式狀態欄。

我們先來看下具體的效果

開啟沉浸模式後,狀態欄消失,從頂部向下滑動,狀態欄出現,退出沉浸模式,狀態欄也出現了。
我們的代碼基於前一篇文章。首先是兩個開啟沉浸模式和關閉沉浸模式的函數

@SuppressLint("NewApi")
public static void hideSystemUI(View view) {
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}

@SuppressLint("NewApi")
public static void showSystemUI(View view) {
view.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

這些代碼可以在google的開發者文檔中找到,可以看這里Using Immersive Full-Screen Mode,上面的代碼是在Android 4.4中才會生效,對應的Android版本兼容的判斷請自行處理。
此外還需要一個輔助函數,用於獲得狀態欄高度,使用反射獲得。

/**
* 獲狀態欄高度
*
* @param context 上下文
* @return 通知欄高度
*/
public int getStatusBarHeight(Context context) {
int statusBarHeight = 0;
try {
Class<?> clazz = Class.forName("com.android.internal.R$dimen");
Object obj = clazz.newInstance();
Field field = clazz.getField("status_bar_height");
int temp = Integer.parseInt(field.get(obj).toString());
statusBarHeight = context.getResources().getDimensionPixelSize(temp);
} catch (Exception e) {
e.printStackTrace();
}
return statusBarHeight;
}

點擊hide按鈕進入沉浸模式,也就是隱藏狀態欄,隱藏狀態欄的同時我們需要修改Toolbar的上內邊距,否則會顯得很難看,這里注冊一個監聽,當進入沉浸模式後我們改變Toolbar的上內邊距

hide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View view = getWindow().getDecorView();
hideSystemUI(view);
mToolbar.set(new View.() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
mToolbar.setPadding(mToolbar.getPaddingLeft(), 0,mToolbar.getPaddingRight(), mToolbar.getPaddingBottom());
}
});
}
});

進入沉浸模式後,手指從屏幕頂部向下劃,狀態欄就出現了,過2秒左右它又會自動消失。
點擊show按鈕退出沉浸模式,同時Toolbar的內邊距也要增加到狀態欄的高度。
?

show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View view = getWindow().getDecorView();
showSystemUI(view);
mToolbar.set(new View.() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
mToolbar.setPadding(mToolbar.getPaddingLeft(), getStatusBarHeight(MainActivity.this),mToolbar.getPaddingRight(), mToolbar.getPaddingBottom());
}
});
}
});

具體效果見上方的效果圖。
如果使用的是SystemBarTintManager這個類進行的狀態欄的著色,除上方的操作外,還要在對應的監聽里增加狀態欄著色的禁止和啟動的功能。
進入沉浸模式,要禁用

tintManager.setStatusBarTintEnabled(false);

退出沉浸模式,要啟動

如果你想更加平滑,則可以對padding的改成增加動畫,具體動畫效果自行添加。
切記在使用沉浸模式前記得判斷Android的版本。SYSTEM_UI_FLAG_IMMERSIVE_STICKY只能在大於等於API Level 19使用。你要兼容低版本的同時使用沉浸模式。在使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY之前先用android.os.Build.VERSION.SDK_INT來判斷當前的系統版本是否是android4.4以上,如果是就啟用代碼,如果不是則跳過不執行。

『陸』 android中怎麼實現沉浸式狀態欄

styles.xml設置如下:
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:actionModeBackground">@drawable/context_menu</item>
</style>

<style name="TranslucentTheme" parent="AppTheme.NoActionBar">
</style>

V21的styles.xml設置如下:
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:statusBarColor">@color/colorPrimary</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:actionModeBackground">@drawable/context_menu</item>
</style>

<style name="TranslucentTheme" parent="AppTheme.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
</style>

再在要顯示的toolbar里加上屬性:
android:fitsSystemWindows="true"

主題的屬性設置為:

<style name="TranslucentTheme" parent="AppTheme.NoActionBar">

『柒』 安卓5.1怎麼實現沉浸式狀態欄

studio,中引入沉浸式兼容庫
compile 『com.readystatesoftware.systembartint:systembartint:1.0.3』
eclipse,可以導入相應的那個類。
第一類,兼容actionbar
第一步:設置activity主題android:theme=」@style/ActionBarTheme」
<style name="ActionBarTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/actionbar_bg</item>
</style>

第二步:設置狀態欄透明,然後設置狀態欄沉浸的顏色
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = 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);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
}

SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
//設置沉浸的顏色 tintManager.setStatusBarTintResource(R.color.statusbar_bg);}

第三步:設置適應windows,在布局文件設置
android:fitsSystemWindows=」true」
如果不設置,應用的ui會頂上去,頂進system ui
ok
第二類 沒有actionbar的activity
第一步,設置主題,android:theme=」@style/FullBleedTheme」
<style name="FullBleedTheme" parent="android:Theme.Holo.Light.NoActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
<style name="FullBleedTheme" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor">
<!-- API 19 theme customizations can go here. -->
</style>

或者
用toolbar只能設置Theme.AppCompat.NoActionBar主題
<style name="AppThemeToolbar" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">#2196F3</item>
<item name="colorPrimaryDark">#2196F3</item>
<!--<item name="colorPrimaryDark">#1565C0</item>-->
<item name="colorAccent">#E91E63</item>
</style>

第二步:同上一個第二步。
設置狀態欄透明+顏色
mTintManager = new SystemBarTintManager(this);
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setNavigationBarTintEnabled(true); mTintManager.setStatusBarTintResource(R.color.statusbar_bg);

『捌』 安卓開發中怎樣設置沉浸式狀態欄

這個特性是andorid4.4支持的,最少要api19才可以使用。下面介紹一下使用的方法,非常得簡單:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//透明狀態欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明導航欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

}

}

//透明狀態欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明導航欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

只要加入這兩行代碼,就可以實現沉浸式通知欄了。

給大家看看這個界面的布局:

<linearlayout android:background="#ffffff" android:cliptopadding="true" android:fitssystemwindows="true" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" tools:context=".MainActivity" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">

<textview android:background="#009959" android:layout_height="100dp" android:layout_width="match_parent"><button android:background="#ff669d/" android:layout_height="50dp" android:layout_width="100dp"></button></textview></linearlayout>

大家看紅色的那部分,加入那兩行以後,界面仍然會是沉浸式的,但狀態欄那部分,就不會再重疊了,像加了padding一樣,如下圖:

大家看圖,綠色的textView和紅色的一個button都被下移了,狀態欄是白色的,是背景linearLayout的顏色。很明顯,這也不是我們想要的,我們希望狀態欄和我們放在頂部的控制項是同一個顏色,同時,控制項內容也不和狀態欄重復,其實,只要把那兩行代碼放到我們頂部的控制項就可以了。代碼如下:

<linearlayout android:background="#ffffff" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" tools:context=".MainActivity" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">

<textview android:background="#009959" android:cliptopadding="true" android:fitssystemwindows="true" android:layout_height="100dp" android:layout_width="match_parent" android:text="你好,請問你有男朋友嗎/"><button android:background="#ff669d/" android:layout_height="50dp" android:layout_width="100dp"></button></textview></linearlayout>

就是那兩行紅色的代碼,放在綠色的textView上,這樣,就會是下面的效果:

這就是我們想要的了。

『玖』 android studio怎麼做沉浸式狀態欄

studio,中引入沉浸式兼容庫
compile 『com.readystatesoftware.systembartint:systembartint:1.0.3』
eclipse,可以導入相應的那個類。
第一類,兼容actionbar
第一步:設置activity主題android:theme=」@/ActionBarTheme」
<style name="ActionBarTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/actionbar_bg</item>
</style>

第二步:設置狀態欄透明,然後設置狀態欄沉浸的顏色
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = 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);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
}

SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
//設置沉浸的顏色 tintManager.setStatusBarTintResource(R.color.statusbar_bg);}

第三步:設置適應windows,在布局文件設置
android:fitsSystemWindows=」true」
如果不設置,應用的ui會頂上去,頂進system ui
ok
第二類 沒有actionbar的activity
第一步,設置主題,android:theme=」@style/FullBleedTheme」
<style name="FullBleedTheme" parent="android:Theme.Holo.Light.NoActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
<style name="FullBleedTheme" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor">
<!-- API 19 theme customizations can go here. -->
</style>

或者
用toolbar只能設置Theme.AppCompat.NoActionBar主題
<style name="AppThemeToolbar" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">#2196F3</item>
<item name="colorPrimaryDark">#2196F3</item>
<!--<item name="colorPrimaryDark">#1565C0</item>-->
<item name="colorAccent">#E91E63</item>
</style>

第二步:同上一個第二步。
設置狀態欄透明+顏色
mTintManager = new SystemBarTintManager(this);
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setNavigationBarTintEnabled(true); mTintManager.setStatusBarTintResource(R.color.statusbar_bg);

『拾』 Android5.0的沉浸式狀態欄是什麼

沉浸式呈現的形式是全透明狀態, 直接顯示狀態欄與導航回欄.
詳細的解釋可參看:答
http://www.miui.com/thread-2626383-1-1.html

閱讀全文

與android50沉浸代碼相關的資料

熱點內容
c將json數組轉化成對象 瀏覽:189
不用下載免費看的網站 瀏覽:954
成龍電影網 瀏覽:158
中文影院在線 瀏覽:108
可編程式控制制器控制什麼 瀏覽:320
iphone取消阻止來電後 瀏覽:590
asp接收form表單上傳文件 瀏覽:437
用手機共享電腦網路 瀏覽:696
電腦文件路徑前綴 瀏覽:811
游戲編程都需要學哪些軟體下載 瀏覽:357
組成合同文件內容 瀏覽:895
黑寡婦燈光配置文件 瀏覽:833
前戲電影 瀏覽:668
linuxwgetcurl 瀏覽:636
河東區愛琴海影院影訊 瀏覽:601
反映女中介和客戶的台灣電影 瀏覽:341
網路技術專業前景 瀏覽:108
韓國古裝電影 床戲 瀏覽:933
哈薩克電影全集免費 瀏覽:405
韓國電影比尿尿尿的遠 瀏覽:340

友情鏈接