首页 / ANDROID / android沉浸式状态栏实现
android沉浸式状态栏实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android沉浸式状态栏实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5388字,纯文字阅读大概需要8分钟。
内容图文
![android沉浸式状态栏实现](/upload/InfoBanner/zyjiaocheng/1163/235d58ed07d1461598e006aa166322d5.jpg)
我们先上两张图,很容易看出区别:
/** * 关于界面 * * @author SuS * @time 2015.07.29 */ public class AboutActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_about); setImmerseLayout(findViewById(R.id.common_back)); initBackButton(); setTitleBar(R.string.durian_about); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onDestroy() { super.onDestroy(); } }现在请注意setImmerseLayout()这个方法,这个方法是在BaseActivity中实现的
public class BaseActivity extends FragmentActivity { private static final String TAG = "BaseActivity"; ............... public void initBackButton() { ImageView backButton = (ImageView) this.findViewById(R.id.durian_back_image); backButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finishActivity(); } }); } protected void setImmerseLayout(View view) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = getWindow(); /*window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);*/ window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); int statusBarHeight = ScreenUtil.getStatusBarHeight(this.getBaseContext()); view.setPadding(0, statusBarHeight, 0, 0); } } public void finishActivity() { finish(); overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out); } public void setTitleBar(int id) { TextView tvName = (TextView) findViewById(R.id.durian_title_text); tvName.setText(id); } }
![技术分享](/upload/getfiles/default/2022/11/11/20221111051407526.jpg)
/** * 用于获取状态栏的高度。 使用Resource对象获取(推荐这种方式) * * @return 返回状态栏高度的像素值。 */ 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; }
<include android:id="@+id/common_back" layout="@layout/common_back" />
common_back的布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/durian_head_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/common_top_bg" > <RelativeLayout android:layout_width="match_parent" android:layout_height="51dp" > <ImageView android:id="@+id/durian_back_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="18dp" android:padding="5dp" android:src="@drawable/btn_back_selector" /> <TextView android:id="@+id/durian_title_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textColor="@color/common_text_black" android:textSize="18sp" /> <ImageView android:id="@+id/durian_titlebar_image1" android:layout_width="51dp" android:layout_height="51dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:scaleType="centerInside" android:visibility="gone" /> <ImageView android:id="@+id/durian_titlebar_image2" android:layout_width="51dp" android:layout_height="51dp" android:layout_centerVertical="true" android:layout_toLeftOf="@id/durian_titlebar_image1" android:scaleType="centerInside" android:visibility="gone" /> </RelativeLayout> </FrameLayout>
protected void setImmerseLayout(View view) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = getWindow(); /*window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);*/ window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); /* int statusBarHeight = ScreenUtil.getStatusBarHeight(this.getBaseContext()); view.setPadding(0, statusBarHeight, 0, 0);*/ } }
![技术分享](/upload/getfiles/default/2022/11/11/20221111051407689.jpg)
总结:
基于以上的方法介绍,我们可以实现状态栏与导航栏以及状态栏与页面大背景的沉浸式体验。
其实上面也可以看出代码封装的一些技巧:如让我们所有的activity继承BaseActivity,这样像
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/s003603u/article/details/47133723
内容总结
以上是互联网集市为您收集整理的android沉浸式状态栏实现全部内容,希望文章能够帮你解决android沉浸式状态栏实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。