当前位置: 首页 > news >正文

Android DiaLog全屏设置,带有叉号的弹窗,这个弹窗分为两个部分,一个是主体,另一个是关闭部分。自定义布局弹窗

1.先上图。要实现的效果图。
在这里插入图片描述

2.这是我自己实现的效果图,是不是跟效果图一摸一样
在这里插入图片描述
来看看整体效果
在这里插入图片描述

3.我把自己实现的效果图的代码写出来。如下就是我的代码
3.1首先是MainActivity类

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myapplication001.R;

public class MainActivity extends AppCompatActivity {

    private TextView tv;
    private Dialog bottomDialog;

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

        tv = (TextView) findViewById(R.id.name);

        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //创建dialog,同时设置dialog主题
                bottomDialog = new Dialog(MainActivity.this, R.style.BottomDialog);
                //绘制dialog  UI视图
                View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog_sharetofriend_and, null);

                //给dialog添加view
                bottomDialog.setContentView(contentView);
                //这里给布局的控件设置点击事件
                bottomDialog.getWindow().findViewById(R.id.exit).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        /*............*/
                        bottomDialog.dismiss();
                    }
                });

                //为绘制的view设置参数
                ViewGroup.LayoutParams layoutParams = contentView.getLayoutParams();
                //设置为全屏的宽
                layoutParams.width = getResources().getDisplayMetrics().widthPixels;
                contentView.setLayoutParams(layoutParams);
                //设置dialog位置
                bottomDialog.getWindow().setGravity(Gravity.BOTTOM);
                //添加进出场动画
                //    bottomDialog.getWindow().setWindowAnimations(R.style.BottomDialog_Animation);
                //允许点击外部退出dialog
                bottomDialog.setCanceledOnTouchOutside(true);
                bottomDialog.setCancelable(true);

                //show  dialog
                bottomDialog.show();
            }
        });

    }

}

3.2这个BottomDialog的主题设置dialog的相关属性

    <!--底部弹框属性设置-->
    <style name="BottomDialog" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog">
        <!--无标题-->
        <item name="android:windowNoTitle">true</item>
        <!--键盘状态-->
        <item name="android:windowSoftInputMode">stateUnspecified</item>
        <!--dialog弹出时activity的背景-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 浮于Activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
    </style>

3.3主MainActivity类的activity_main布局代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.xf.ap.MainActivity">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_centerInParent="true"
        android:layout_marginTop="100dp"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:visibility="visible" />

    <LinearLayout
        android:id="@+id/ff"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="你好,我在写全屏弹窗,带有叉号的弹窗"
            android:textColor="@color/teal_200"
            android:textSize="34sp" />
    </LinearLayout>

</RelativeLayout>

3.4弹窗的布局代码dialog_sharetofriend_and

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal|center_vertical"
    android:background="@android:color/transparent">

    <!--返回按钮-->
    <ImageView
        android:id="@+id/exit"
        android:layout_width="66dp"
        android:layout_height="66dp"
        android:layout_below="@id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:layout_marginBottom="100dp"
        android:src="@mipmap/ic6" />


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="#F44336" />

</RelativeLayout>

3.5叉号的图片
ic6.jpg
在这里插入图片描述

3.6你也可以参考这篇文章,这篇文章也可以实现

https://blog.csdn.net/qq_40543575/article/details/81289470

相关文章:

  • 黄冈建设信息网站seo需要什么技术
  • 易思企业网站管理系统淘宝推广平台
  • 建设网站那个好模板建站公司
  • 网站做国际化小程序开发系统
  • 长春市城乡建设委员会官方网站软文技巧
  • 网站建设三网合一上海网站建设哪家好
  • BN 层的作用, 为什么有这个作用?
  • 常见的HR面问题汇总
  • 知识图谱:知识图谱多模态推理技术详解
  • Spring Boot 中利用 Jasypt 实现数据库字段的透明加密解密
  • OBS 录屏软件 for Mac 视频录制
  • 大数据(4.2)Hive核心操作实战指南:表创建、数据加载与分区/分桶设计深度解析
  • AI Agent开发大全第二十课-如何开发一个MCP(从0开发一个MCP Server)
  • MyBatis Plus 在 ZKmall开源商城持久层的优化实践
  • Android学习总结之算法篇五(字符串)
  • 什么是接口测试,如何做接口测试?
  • node_modules\deasync: Command failed.
  • cursor机器码重置
  • K8s安全体系全面剖析:从攻击面到最佳实践
  • [创业之路-352]:从创业和公司经营的角度看:分析美国的三大财务报表
  • AI随身翻译设备:从翻译工具到智能生活伴侣
  • SpringBoot+MyBatis Plus+PageHelper+vue+mysql 实现用户信息增删改查功能
  • easy-poi 一对多导出
  • 戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
  • 网络编程—TCP/IP模型(TCP协议)
  • JSONP跨域访问漏洞