IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android activity 局部展示 -> 正文阅读

[移动开发]Android activity 局部展示

在该activity的OnCreate()方法里设置,可以设置弹出框大小

WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高
LayoutParams p = getWindow().getAttributes(); // 获取对话框当前的参值
p.height = (int) (d.getHeight() * 1.0); // 高度设置为屏幕的1.0
p.width = (int) (d.getWidth() * 0.7); // 宽度设置为屏幕的0.8
p.alpha = 1.0f; // 设置本身透明度
p.dimAmount = 0.0f; // 设置黑暗度
getWindow().setAttributes(p); // 设置生效
getWindow().setGravity(Gravity.RIGHT); // 设置靠右对齐

声明一个style,这个样式定义了Dialog样式

<style name="ActivityDialogStyle" parent="Theme.AppCompat.NoActionBar">
    <!--设置dialog的背景-->
    <item name="android:windowBackground">@android:color/transparent</item>
    <!--设置Dialog的windowFrame框为无-->
    <item name="android:windowFrame">@null</item>
    <!--设置无标题-->
    <item name="android:windowNoTitle">true</item>
    <!--是否浮现在activity之上-->
    <item name="android:windowIsFloating">true</item>
    <!--是否半透明-->
    <item name="android:windowIsTranslucent">true</item>
    <!--设置窗口内容不覆盖-->
    <item name="android:windowContentOverlay">@null</item>
    <!--设置动画-->
    <item name="android:windowAnimationStyle">@style/DialogScaleAnim</item>
    <!--背景是否模糊显示-->
    <item name="android:backgroundDimEnabled">true</item>
</style>

在Manifest.xml文件中声明对应的Activity的theme

<activity android:name="MyDialogActivity"
            android:theme="@style/ActivityDialogStyle"/>

触摸Dialog/Activity弹窗以外的区域,本Dialog消失且不影响弹窗以外的view控件响应触摸事件。
需要添加window的相应flag,并利用onTouchEvent回调执行Dialog的消失机制。

//设置window属性(本例在onCreate函数中设置) 
//触摸Dialog外区域时,外区域view接收触摸事件
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
//触摸Dialog外区域时通知Dialog触摸事件
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

    //重写onTouchEvent回调,(局部显示)
    @Override
    public boolean onTouchEvent(@NonNull MotionEvent event) {
//        Log.i(TAG, "onTouchEvent: event = " + event.getAction());
        if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
            //接收到外部触摸事件时执行相应处理逻辑(本例中执行window消失机制)。
            finish();
            return true;
        }
        return super.onTouchEvent(event);
    }
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:00:36  更:2022-04-28 12:01:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:27:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码