项目中遇到了这个需求,记录下来以便以后查询。顺便写出来供大家参考。
一般如果你要实现一个透明的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; } }); } }
相关推荐
- **暂停(Paused)**: 当另一个Activity部分覆盖当前Activity,如弹出一个透明或半透明对话框,会调用`onPause()`。此时,Activity仍然可见,但不能接收用户输入。 - **停止(Stopped)**: 当Activity完全被遮挡...
首先,要创建中间弹窗,我们需要自定义一个Activity。这个Activity的设计应该具有较小的宽高比,使其看起来像一个弹出窗口。我们可以在布局文件中设置Activity的宽高,例如: ```xml android:layout_width="300dp...
在Android应用开发中,用户体验是至关重要的一个环节,而Activity之间的切换动画则能极大地提升应用的交互性和趣味性。本文将深入探讨如何实现"2个Activity之间的切换动画效果",主要涉及帧动画(Framed Animation)和...
Activity是Android应用程序中的一个组件,它负责与用户进行交互。通常,Activity会显示一个全屏的用户界面。为了实现圆角效果,我们需要对Activity的布局进行特殊处理,使其在显示时具有圆角。 1. **自定义圆角布局...
总之,Android半透明图层用户引导是一个实用且有效的教学工具,通过合理的设计和编程,可以提升用户对应用的理解和满意度。在实践中,不断优化引导体验,使其既简洁又具有吸引力,是每个开发者都需要关注的细节。
本篇文章将深入探讨如何制作一个自定义的Dialog,以满足特定的设计需求。 首先,我们来理解Dialog的基本概念。Dialog是弹出式窗口,通常在主应用程序窗口之上展示,用于向用户提供额外信息或进行简短的交互。它们不...
一个常见的应用场景是制作一个加载图标,使其连续360度旋转。 这些动画可以通过`AnimationUtils.loadAnimation()`方法加载,并使用`startAnimation()`方法应用到视图上。另外,Android还提供了`ObjectAnimator`类,...
7. **自定义ViewGroup**:为了实现更复杂的功能,开发者可能会创建一个自定义的`ViewGroup`,重写`onLayout()`和`onDraw()`方法,以实现更自定义的显示效果。 8. **权限检查**:如果HUD涉及到悬浮在其他应用之上,...
在这个"Fragment制作的简易多媒体文件管理器"项目中,我们看到开发者利用Fragment来创建了一个专门针对TV端的多媒体文件浏览应用。下面将详细解析这个项目的相关知识点。 首先,Fragment的使用:Fragment是Android ...
本资源"Android程序研发源码Android 透明菜单源码.rar"提供了一份关于如何实现Android透明菜单的源代码,这对于开发者来说是一个宝贵的参考资料。 在Android系统中,透明菜单主要涉及以下几个关键知识点: 1. **...
1. 创建一个名为`SplashActivity`的新Activity,继承自`AppCompatActivity`。 2. 在`onCreate()`方法中,设置对应的布局,并启动欢迎界面的动画。 3. 使用`Handler`或`CountDownTimer`来控制欢迎界面的展示时间,...
在Android开发中,动画(Animation)是一个至关重要的组成部分,它为用户提供更加生动、直观的交互体验。本篇文章将深入探讨如何在Android中制作动画引导页,以提升应用的用户体验和吸引力。 首先,我们要理解Android...
为了在Unity中实际使用这些功能,你需要将这两个脚本挂载到一个游戏对象上,并在合适的时候调用它们的方法。同时,确保在Android设备上进行测试,因为这些功能可能在模拟器上表现不一致,或者在某些旧版本的Android...
通常,它会包含一个或多个Java文件(如`MainActivity.java`和`MyPagerAdapter.java`),一个XML布局文件(如`activity_main.xml`),以及可能的图片资源文件。 总结来说,实现Android图片轮播效果主要涉及以下几个...
首先,iText5是一款强大的Java库,主要用于创建和编辑PDF文档,而ZXing(Zebra Crossing)是一个开源的条码读取库,支持多种条码格式,包括二维码。QRCore是ZXing的一个轻量级版本,专为Android平台设计,简化了在...
在Android应用开发中,创建一个美观且功能丰富的用户界面是至关重要的。滑动的半屏筛选菜单是一种常见的设计模式,可以提升用户体验,让用户更便捷地访问和操作应用的各种功能。这个设计灵感来源于知名的社交应用...
【garland-view-android】是一个由知名设计机构@ramotion开发并开源的Android库,它提供了一种独特的用户体验,使得在不同的内容列表之间可以实现平滑、无缝的转换效果。这种视图被称为“花环视图”(Garland View)...
例如,你可以创建一个`alpha.xml`文件来定义一个渐显渐隐的动画,然后在Activity中使用`AnimationUtils.loadAnimation()`方法加载并应用到指定的View上。 属性动画则更加灵活,它可以改变对象的任何可动画属性,...
1. **Looper**:一个线程可以产生一个Looper对象,由它来管理此线程里的`Message Queue`(消息队列)。通常情况下,UI线程会自动创建一个Looper对象。 2. **Handler**:用于发送消息到`Message Queue`,也可以接收...
第三个自定义View可能是一个画笔设置视图,用于调整画笔的颜色、宽度、透明度等属性。这通常是一个包含颜色选择器、滑块或开关的布局。通过监听这些控件的事件,我们可以实时更新画笔的属性,从而改变用户的绘画效果...