`

制作一个透明的Activity

阅读更多

项目中遇到了这个需求,记录下来以便以后查询。顺便写出来供大家参考。

 

一般如果你要实现一个透明的Activity,通常你会想到在Manifest文件中对该Activity使用Dialog主题:

android:theme="@android:style/Theme.Dialog"

 

但是这样做有一个问题,就是这个样式被定死了,不容易修改,比如,我的需求是,该Dialog的宽要填充整个屏幕的宽度,这就需要自己去定义了。

下面先看效果:

 

 

我们先看看如何实现透明的Activity

 

1.在布局文件中配置好你要显示的透明的Activity的效果:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_bg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#356789" >

        <EditText
            android:id="@+id/et_input"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:hint="input something..."/>

        <Button
            android:id="@+id/btn_ok"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/et_input"
            android:layout_marginTop="15dip"
            android:text="ok" />
    </RelativeLayout>

</LinearLayout>

 我让这个EditText和Button居中显示,类似对话框的效果。

 

2.为这个Activity设置style:

res/values/styles.xml:

<resources>
    <style name="TransparenceTheme">
    <item name="android:windowBackground">@color/transparent_background</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">true</item>  
    <item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
  </style>
</resources>

 

其中里面的android:windowBackground属性需要设置一个透明的颜色

在res/values/color.xml中加入:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="transparent_background">#50000000</color>
</resources>

 

3.在Manifest文件中为这个Activity设置我们刚才定义好的style:

<activity
            android:name="com.michael.transparenceactivitydemo.TransparenceActivity"
            android:theme="@style/TransparenceTheme"/>

 

这样就完成了。但是,通常实现这种透明的Activity多半是用来实现用户输入的效果。如果你需要在这个Activity启动的时候自动弹出键盘,并且在弹出键盘的时候,这个Activity能够自动向上移动,那么我们需要在Manifest中的该Activity中设置:

android:windowSoftInputMode="adjustResize|stateAlwaysVisible"

 

adjustResize是在键盘弹出的时候,界面可以自动适应,自动向上推,而加入stateAlwaysVisible属性后,键盘会自动弹出。

 

还有一点就是如果你想让用户能够在触摸Activity透明部分的时候,这个Activity自动消失,那么你可以这样做:监听这个布局的最外层控件,这里是LinearLayout。实现OnTouchListener。监听到用户触摸的时候,执行finish操作即可:

public class TransparenceActivity extends Activity {

	private LinearLayout llBg;

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

		llBg = (LinearLayout) findViewById(R.id.ll_bg);
		llBg.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View arg0, MotionEvent arg1) {

				finish();
				return true;
			}
		});
	}

}

 

 

 

 

 

 

 

  • 大小: 247.2 KB
0
0
分享到:
评论

相关推荐

    Activity生命周期Demo

    - **暂停(Paused)**: 当另一个Activity部分覆盖当前Activity,如弹出一个透明或半透明对话框,会调用`onPause()`。此时,Activity仍然可见,但不能接收用户输入。 - **停止(Stopped)**: 当Activity完全被遮挡...

    Android activity中间弹框

    首先,要创建中间弹窗,我们需要自定义一个Activity。这个Activity的设计应该具有较小的宽高比,使其看起来像一个弹出窗口。我们可以在布局文件中设置Activity的宽高,例如: ```xml android:layout_width="300dp...

    2个Activity之间的切换动画效果

    在Android应用开发中,用户体验是至关重要的一个环节,而Activity之间的切换动画则能极大地提升应用的交互性和趣味性。本文将深入探讨如何实现"2个Activity之间的切换动画效果",主要涉及帧动画(Framed Animation)和...

    [Android开发实用技巧]实现圆角Activity

    Activity是Android应用程序中的一个组件,它负责与用户进行交互。通常,Activity会显示一个全屏的用户界面。为了实现圆角效果,我们需要对Activity的布局进行特殊处理,使其在显示时具有圆角。 1. **自定义圆角布局...

    android 半透明图层用户引导、用户指导、用户教导,教用户怎么使用app的页面制作

    总之,Android半透明图层用户引导是一个实用且有效的教学工具,通过合理的设计和编程,可以提升用户对应用的理解和满意度。在实践中,不断优化引导体验,使其既简洁又具有吸引力,是每个开发者都需要关注的细节。

    制作一个自定义Dialog例子

    本篇文章将深入探讨如何制作一个自定义的Dialog,以满足特定的设计需求。 首先,我们来理解Dialog的基本概念。Dialog是弹出式窗口,通常在主应用程序窗口之上展示,用于向用户提供额外信息或进行简短的交互。它们不...

    android应用源码动画效果 translate、scale、alpha、rotate 切换Activity动画.rar

    一个常见的应用场景是制作一个加载图标,使其连续360度旋转。 这些动画可以通过`AnimationUtils.loadAnimation()`方法加载,并使用`startAnimation()`方法应用到视图上。另外,Android还提供了`ObjectAnimator`类,...

    android仿微信半透明指示器(HUD)

    7. **自定义ViewGroup**:为了实现更复杂的功能,开发者可能会创建一个自定义的`ViewGroup`,重写`onLayout()`和`onDraw()`方法,以实现更自定义的显示效果。 8. **权限检查**:如果HUD涉及到悬浮在其他应用之上,...

    Fragment制作的简易多媒体文件管理器

    在这个"Fragment制作的简易多媒体文件管理器"项目中,我们看到开发者利用Fragment来创建了一个专门针对TV端的多媒体文件浏览应用。下面将详细解析这个项目的相关知识点。 首先,Fragment的使用:Fragment是Android ...

    Android程序研发源码Android 透明菜单源码.rar

    本资源"Android程序研发源码Android 透明菜单源码.rar"提供了一份关于如何实现Android透明菜单的源代码,这对于开发者来说是一个宝贵的参考资料。 在Android系统中,透明菜单主要涉及以下几个关键知识点: 1. **...

    [源码]安卓程序欢迎画面制作教程附带源码

    1. 创建一个名为`SplashActivity`的新Activity,继承自`AppCompatActivity`。 2. 在`onCreate()`方法中,设置对应的布局,并启动欢迎界面的动画。 3. 使用`Handler`或`CountDownTimer`来控制欢迎界面的展示时间,...

    Animation——制作动画引导页

    在Android开发中,动画(Animation)是一个至关重要的组成部分,它为用户提供更加生动、直观的交互体验。本篇文章将深入探讨如何在Android中制作动画引导页,以提升应用的用户体验和吸引力。 首先,我们要理解Android...

    Unity显示Android手机状态栏

    为了在Unity中实际使用这些功能,你需要将这两个脚本挂载到一个游戏对象上,并在合适的时候调用它们的方法。同时,确保在Android设备上进行测试,因为这些功能可能在模拟器上表现不一致,或者在某些旧版本的Android...

    史上最简单Android图片轮播效果实现 源码程序

    通常,它会包含一个或多个Java文件(如`MainActivity.java`和`MyPagerAdapter.java`),一个XML布局文件(如`activity_main.xml`),以及可能的图片资源文件。 总结来说,实现Android图片轮播效果主要涉及以下几个...

    完整的利用itext5、zxing、QRCore制作pdf、二维码图片插入pdf,并解析pdf中的二维码信息

    首先,iText5是一款强大的Java库,主要用于创建和编辑PDF文档,而ZXing(Zebra Crossing)是一个开源的条码读取库,支持多种条码格式,包括二维码。QRCore是ZXing的一个轻量级版本,专为Android平台设计,简化了在...

    Android实现滑动的半屏筛选菜单(Path,云中书城,人人网客户端效果)

    在Android应用开发中,创建一个美观且功能丰富的用户界面是至关重要的。滑动的半屏筛选菜单是一种常见的设计模式,可以提升用户体验,让用户更便捷地访问和操作应用的各种功能。这个设计灵感来源于知名的社交应用...

    garland-view-android,:octocat:garlandview在多个内容列表之间无缝转换。由@ramotion制作.zip

    【garland-view-android】是一个由知名设计机构@ramotion开发并开源的Android库,它提供了一种独特的用户体验,使得在不同的内容列表之间可以实现平滑、无缝的转换效果。这种视图被称为“花环视图”(Garland View)...

    android动画制作和图片显示实例

    例如,你可以创建一个`alpha.xml`文件来定义一个渐显渐隐的动画,然后在Activity中使用`AnimationUtils.loadAnimation()`方法加载并应用到指定的View上。 属性动画则更加灵活,它可以改变对象的任何可动画属性,...

    笔试JAVA可以看看

    1. **Looper**:一个线程可以产生一个Looper对象,由它来管理此线程里的`Message Queue`(消息队列)。通常情况下,UI线程会自动创建一个Looper对象。 2. **Handler**:用于发送消息到`Message Queue`,也可以接收...

    自定义view-画板

    第三个自定义View可能是一个画笔设置视图,用于调整画笔的颜色、宽度、透明度等属性。这通常是一个包含颜色选择器、滑块或开关的布局。通过监听这些控件的事件,我们可以实时更新画笔的属性,从而改变用户的绘画效果...

Global site tag (gtag.js) - Google Analytics