Activity界面变暗、变亮的核心方法

在安卓开发中,通常我们可以看到一个视图弹出时,当前Activity界面会变暗,在触摸视图以外的区域时,Activity界面还原亮度的效果,其实这是通过改变当前Window(窗口)的属性来实现的,下面是结合popWindow实现的效果图以及Window的部分源码:

屏幕变暗 变亮效果图:
在这里插入图片描述

Window设置屏幕明暗属性的部分源码:

 // The current window attributes.
private final WindowManager.LayoutParams mWindowAttributes =
new WindowManager.LayoutParams();
/**
* Specify custom window attributes. <strong>PLEASE NOTE:</strong> the
* layout params you give here should generally be from values previously
* retrieved with {@link #getAttributes()}; you probably do not want to
* blindly create and apply your own, since this will blow away any values
* set by the framework that you are not interested in.
*
* @param a The new window attributes, which will completely override any
* current values.
*/
public void setAttributes(WindowManager.LayoutParams a) {
mWindowAttributes.copyFrom(a);
dispatchWindowAttributesChanged(mWindowAttributes);
}
/**
* Retrieve the current window attributes associated with this panel.
*
* @return WindowManager.LayoutParams Either the existing window
* attributes object, or a freshly created one if there is none.
*/
public final WindowManager.LayoutParams getAttributes() {
return mWindowAttributes;
    }

 /**
* {@hide}
*/
protected void dispatchWindowAttributesChanged(WindowManager.LayoutParams attrs) {
if (mCallback != null) {
mCallback.onWindowAttributesChanged(attrs);
}
 } 
/**
* Set the amount of dim behind the window when using
* {@link WindowManager.LayoutParams#FLAG_DIM_BEHIND}. This overrides
* the default dim amount of that is selected by the Window based on
* its theme.
*
* @param amount The new dim amount, from 0 for no dim to 1 for full dim.
*/
public void setDimAmount(float amount) {
final WindowManager.LayoutParams attrs = getAttributes();
attrs.dimAmount = amount;
mHaveDimAmount = true;
dispatchWindowAttributesChanged(attrs);
}

设置屏幕明暗核心方法:

/**
* 
* 定义WindowManager.LayoutParams lp 
* (1f-——0f)亮到暗的透明度变化 这里设置为0.7f(较暗的透明度)
* 最后通过setAttributes(lp)方法,唤醒窗口明暗度变化
*
*/
private WindowManager.LayoutParams lp = null;
lp.alpha = 0.7f;
getWindow().setAttributes(lp);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activity界面是Android应用程序中的基本UI组件之一,用于展示用户界面和处理用户交互。实验中,我们可以通过以下步骤来创建和使用Activity界面。 首先,我们需要在Android项目中创建一个新的Activity类。可以通过右键点击项目目录中的Java文件夹,选择“新建”->“Activity”来创建一个新的Activity类。在创建过程中,我们可以选择模板、布局文件和Activity的名称等。 创建完Activity类后,我们需要在Activity的布局文件中定义界面UI组件,例如按钮、文本框、图像等。可以通过XML标记语言来创建和配置布局文件。在布局文件中,我们可以指定每个UI组件的位置、大小、样式等属性。 在Activity的代码中,我们可以通过findViewById()方法来获取布局文件中的UI组件的引用,并对它们进行操作。例如,我们可以在按钮上设置点击事件的监听器,当用户点击按钮时,会触发相应的方法。 我们还可以通过Intent对象在不同的Activity之间进行界面的切换。通过启动一个新的Activity,我们可以显示新的界面,并将数据传递给新的界面。 在实验中,我们可以定义一些基本的Activity界面,例如登录界面、注册界面、设置界面等。通过实验,我们可以熟悉Activity界面的创建、布局和交互操作等基本方法。此外,我们还可以通过实验来学习更高级的功能,如Activity之间的通信、Fragment的使用等。 总之,Activity界面是Android应用程序中最基本的界面组件之一,通过实验我们可以掌握创建、布局和操作Activity界面的基本方法,为开发更复杂的应用程序奠定基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值