android最外层全屏背景,Android开发中的全屏背景显示方案

引子

不管是Android还是iOS平台中,都可以看到一些应用在启动的时候会先出现一个启动画面(Splash Activity),如QQ、微信等。这个启动画面中往往会将ActionBar和Status Bar隐藏掉,然后用户进入一种沉浸的状态,形成更强烈的视觉冲击。一方面,这可以给用户留下更深刻的使用体验,从而产生一定品牌效应;另一方面,也给应用的启动初始化留下了充裕的时间,避免因为启动时间过长而给用户留下不良的印象。因此,全屏显示在手机应用中得到了广泛的应用。那么这篇博客中就记录下全屏显示的一些实现方案。

实现

方案一:给布局管理器设置背景图片。这种方案是通过设置android:background和NoActionBar主题来实现的。

1

2

3

4 @color/colorPrimary

5 @color/colorPrimaryDark

6 @color/colorAccent

7

[email protected][email protected]��,还有一点遗憾,status Bar还是没有隐藏掉,因此还要调用方法将Status Bar隐藏掉:

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

方案二、在FrameLayout中添加一个全屏的子视图ImageView。具体说来就是将ImageView作为FrameLayout的第一个子视图,基于FrameLayout的属性,后面添加的子视图都将叠加到第一个子视图之上,间接地实现了全图片视图背景。

1 <?xml version="1.0" encoding="utf-8"?>

2

3 xmlns:tools="http://schemas.android.com/tools"

4 android:layout_width="match_parent"

5 android:layout_height="match_parent"

6 tools:context="com.hnb.zzk.clippingtest.MainActivity">

7

8

10 android:layout_height="match_parent"

11 android:adjustViewBounds="false"

12 android:src="@drawable/background"

13 android:scaleType="centerCrop">

14

15

16

17

在Java代码中还是一样设置:

1 requestWindowFeature(Window.FEATURE_NO_TITLE);2 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

这样实现的效果和方案一并没有什么差别。但是要注意当加载分辨率较大的图片时、或者图片较多时,容易导致内存溢出。

方案三、使用Java代码动态加载图片设置全屏背景。这种方案的原理是,根据显示屏幕的大小对图片进行缩放,从而对屏幕尺寸进行适配。

/* create a full screen window */

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.your_activity);

/* adapt the image to the size of the display */

Display display = getWindowManager().getDefaultDisplay();

Point size = new Point();

display.getSize(size);

Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(

getResources(),R.drawable.background),size.x,size.y,true);

/* fill the background ImageView with the resized image */

ImageView iv_background = (ImageView) findViewById(R.id.iv_background);

iv_background.setImageBitmap(bmp);

参考

原文:http://www.cnblogs.com/csuftzzk/p/android_full_screen.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值