Android 简简单单封装一个Dialog

s如题封装一个简单的Dialog基类。支持居上下左右,可设置是否铺满屏幕、是否需要阴影、上下偏移、是否可以点击外部关闭、设置dismiss监听。

还提供了一些方便设置view属性的方法。

package com.youthmba.ymbaandroid.appbiz.basics.widget.dialog

import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.DialogInterface
import android.graphics.Color
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import android.widget.ImageView
import android.widget.TextView
import com.youthmba.ymbaandroid.R
import kotlin.Int as Int1

/**
 * context
 * layoutId 布局
 * gravity 位置
 * matchParent 是否铺满屏幕
 * needDim 需不需要阴影
 * y 上下偏移
 */
abstract class BaseDialog(var context: Context,var layoutId: Int1, var gravity: Int1, var matchParent:Boolean, var needDim:Boolean, var y:Int1) {

    constructor(context: Context,layoutId: kotlin.Int):this(context,layoutId,Gravity.CENTER,false,true,-1)

    constructor(context: Context, layoutId: Int1, gravity: Int1):this(context,layoutId,gravity,false,true,-1)

    constructor(context: Context, layoutId: Int1, matchParent: Boolean):this(context,layoutId,Gravity.CENTER,matchParent,true,-1)

    constructor(context: Context,layoutId: kotlin.Int,gravity: Int1,matchParent:Boolean):this(context,layoutId,gravity,matchParent,true,-1)
    
    constructor(context: Context,layoutId: kotlin.Int,gravity: Int1,matchParent:Boolean, needDim:Boolean):this(context,layoutId,gravity,matchParent,needDim,-1)

    protected var contentView :View?= null

    fun show(){
        contentView = LayoutInflater.from(context).inflate(layoutId, null)
        contentView?.let {
            val dialog = AlertDialog.Builder(context,getStyle())
                .setView(it)
                .setCancelable(getCancelable())
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装一个dialog组件可以分为以下几个步骤: 1. 设计组件API:包括输入参数和输出结果。例如,输入参数可能包括标题、内容、按钮等信息;输出结果可能包括用户的选择、关闭事件等信息。 2. 编写组件逻辑:根据设计好的API,编写组件的业务逻辑,包括渲染组件、处理用户输入等。 3. 添加样式:为组件添加必要的样式,使其能够呈现出设计好的外观。 4. 测试和调试:测试组件的功能是否符合API设计,调试组件中可能存在的问题。 5. 文档化:为组件编写文档,包括组件的使用方法、输入参数和输出结果等。 下面是一个简单的dialog组件的示例代码: ``` // Dialog组件的API interface DialogProps { title: string; content: string; onConfirm?: () => void; onCancel?: () => void; } // Dialog组件 const Dialog: React.FC<DialogProps> = ({ title, content, onConfirm, onCancel }) => { return ( <div className="dialog"> <h2>{title}</h2> <p>{content}</p> <div className="buttons"> <button onClick={onConfirm}>确认</button> <button onClick={onCancel}>取消</button> </div> </div> ); }; // 使用Dialog组件 const App: React.FC = () => { const handleConfirm = () => { console.log("确认"); }; const handleCancel = () => { console.log("取消"); }; return ( <div className="app"> <Dialog title="提示" content="确定要删除吗?" onConfirm={handleConfirm} onCancel={handleCancel} /> </div> ); }; ``` 在上面的示例中,我们定义了Dialog组件的API,包括title、content、onConfirm和onCancel等输入参数。然后,我们编写了Dialog组件的业务逻辑,包括渲染组件、处理用户输入等。最后,我们在App组件中使用Dialog组件,提供了相应的输入参数和回调函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值