Android项目实战(七):Dialog主题Activity实现自定义对话框效果

简介: 原文:Android项目实战(七):Dialog主题Activity实现自定义对话框效果想必大家都用过Dialog主题的Activity吧,用它来显示自定义对话框效果绝对是一个非常不错的选择。 即把activity交互界面以Dialog的形式展现出来,Dialog主题的Activity大小将以内容的宽高来决定 可以看到设置为Theme.
原文: Android项目实战(七):Dialog主题Activity实现自定义对话框效果

想必大家都用过Dialog主题的Activity吧,用它来显示自定义对话框效果绝对是一个非常不错的选择。

即把activity交互界面以Dialog的形式展现出来,Dialog主题的Activity大小将以内容的宽高来决定

<activity android:name=MainActivity
android:theme
=”@android:style/Theme.Dialog”>
</activity>

可以看到设置为Theme.Dialog主题的activity显示效果,

是类似对话框的形式显示出来的,而背景则是这个Activity的上一个activity交互界面,

或者如果此Activity是程序第一个Activity,背景则是手机桌面

那么让我们自己做一个漂亮点的对话框形式的Activity

首先,要把Activity自带的标题去掉

使用 requestWindowFeature(Window.FEATURE_NO_TITLE); 语句

注意 需要在 setContentView(R.layout.main); 语句之前使用

画一个布局,具体效果看自己的Xml写的怎么样了

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        android:orientation="vertical"
        android:background="@drawable/duanxinbeijing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="0.0dip"
            android:layout_weight="2.0">
        <TextView
                android:layout_gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15.0dip"
                android:layout_marginBottom="15.0dip"
                android:layout_weight="1.0" />
    </LinearLayout>
    <TextView
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="15.0dip"
            android:text="是否拨打电话"
            android:textSize="20sp"
            android:layout_weight="1.0" />
    <View
            android:background="#ffd1d1d1"
            android:layout_width="fill_parent"
            android:layout_height="2.0px" />
    <LinearLayout
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        <ImageButton
                android:id="@+id/call_dialog_queren"
                android:layout_width="0.0dip"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:layout_marginBottom="10.0dip"
                android:src="@drawable/dialogqueren"
                android:background="#0000"
                android:layout_weight="1.0" />
        <ImageButton
                android:id="@+id/call_dialog_quxiao"
                android:layout_width="0.0dip"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:layout_marginBottom="10.0dip"
                android:src="@drawable/dialogquxiao"
                android:background="#0000"
                android:layout_weight="1.0" />
    </LinearLayout>
</LinearLayout>
View Code

Activity关键代码:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); //去除这个Activity的标题栏
        setContentView(R.layout.main);
    }

看效果图:

------------------------------------------------------------------------------------------------

当前,上述是我们大家一般使用的操作,但是,如果我们需要一个更加漂亮,用户体验更好的,比如说圆角对话框呢,而上述方法可以明显的看到当背景是圆角图片的时候,四个角的效果是十分差的。 android:theme=”@android:style/Theme.Dialog” 主题的Activity是方方正正的对话框样式的。

实现方法就是 自定义一个style ,在res/styles.xml 文件中

<style name="MyDialogStyle">
        <item name="android:windowBackground">@android:color/transparent</item> 设置dialog的背景,此处为系统给定的透明值
        <item name="android:windowFrame">@null</item>                Dialog的windowFrame框为无
        <item name="android:windowNoTitle">true</item>         是否显示标题
        <item name="android:windowIsFloating">true</item>            是否浮现在activity之上
        <item name="android:windowIsTranslucent">true</item>         是否半透明
        <item name="android:windowContentOverlay">@null</item>       是否有覆盖
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>   设置Activity出现方式
        <item name="android:backgroundDimEnabled">true</item>        背景是否模糊显示
</style>

布局文件不变,再更改清单配置文件:

<activity
     android:name="MainActivity"
     android:theme="@style/MyDialogStyle" />  //主题设置为我们自定义的style
<activity

即可看到效果,是不是四个直角成为背景图片对应的圆角了

 

当然,它还是一个Activity,所以可以照常的对Activity里面的控件进行操作

目录
相关文章
|
14天前
|
XML IDE 开发工具
【Android UI】自定义带按钮的标题栏
【Android UI】自定义带按钮的标题栏
23 7
【Android UI】自定义带按钮的标题栏
|
1天前
|
搜索推荐 数据库 Android开发
自定义头像 Android
【6月更文挑战第16天】
|
7天前
|
Android开发
Android面试题之activity启动流程
该文探讨了Android应用启动和Activity管理服务(AMS)的工作原理。从Launcher启动应用开始,涉及Binder机制、AMS回调、进程创建、Application和Activity的生命周期。文中详细阐述了AMS处理流程,包括创建ClassLoader、加载APK、启动Activity的步骤,以及权限校验和启动模式判断。此外,还补充了activity启动流程中AMS的部分细节。欲了解更多内容,可关注公众号“AntDream”。
10 1
|
14天前
|
存储 Java Android开发
Android上在两个Activity之间传递Bitmap对象
Android上在两个Activity之间传递Bitmap对象
14 2
|
14天前
|
XML API Android开发
android上FragmentTabHost实现自定义Tab Indicator
android上FragmentTabHost实现自定义Tab Indicator
15 1
|
14天前
|
XML 前端开发 API
Android中实现Bitmap在自定义View中的放大与拖动
Android中实现Bitmap在自定义View中的放大与拖动
31 1
|
18天前
|
Java Android开发 C++
42. 【Android教程】活动:Activity
42. 【Android教程】活动:Activity
17 2
|
18天前
|
API Android开发
32. 【Android教程】对话框:AlertDialog
32. 【Android教程】对话框:AlertDialog
15 2
|
1月前
|
Android开发 异构计算 前端开发
Android显示原理,安卓自定义view面试
Android显示原理,安卓自定义view面试
|
29天前
|
搜索推荐 Android开发 开发者
Android应用开发:实现自定义ViewPager2的完全指南
【5月更文挑战第23天】 在移动应用开发的领域中,为用户提供流畅且直观的界面体验至关重要。Android平台上的ViewPager2组件提供了一个强大的方式来实现可滑动的页面,但有时候默认的行为和样式可能无法满足特定的设计要求。本文将深入探讨如何通过创建一个自定义的ViewPager2来扩展其功能,包括实现新的转换效果、修改指示器样式以及增加触摸事件响应等。我们将提供详尽的步骤和代码示例,帮助开发者掌握创建高度定制的ViewPager2所需的关键概念和技术。