使用Android开源组件DialogX、自定义加载动画的demo

使用Android开源组件DialogX、自定义加载动画的demo

  • 展示
    • 图片
    • 部分代码(java)
    • Gitee地址

展示

图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码(java)

LoginActivity:

package com.lxz.myapp.activity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.google.android.material.textfield.TextInputEditText;
import com.lxz.myapp.MainActivity;
import com.lxz.myapp.R;
import com.lxz.myapp.databinding.ActivityLoginBinding;
import com.lxz.myapp.utils.AnimationUtil;
import com.lxz.myapp.utils.DialogXUtil;
import com.lxz.myapp.utils.StringUtil;

public class LoginActivity extends BaseActivity {
    private ActivityLoginBinding binding;
    private float mWidth, mHeight;
    private TextInputEditText etAccount,etPassword;
    private LinearLayout mAccount,mPassword;
    private TextView loginToRegister;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityLoginBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        mAccount = findViewById(R.id.login_input_layout_account);
        mPassword = findViewById(R.id.login_input_layout_psw);
        etAccount = findViewById(R.id.login_account_et);
        etPassword = findViewById(R.id.login_password_et);
        // 计算出控件的高与宽
        mWidth = binding.loginLoginButton.getMeasuredWidth();
        mHeight = binding.loginLoginButton.getMeasuredHeight();

        initView();
    }



    private void initView() {
        clickLoginToRegister();
        clickLogin();
        clickCancel();
    }


    //点击登录界面的注册
    private void clickLoginToRegister(){
        //点击登录界面的注册
        loginToRegister = findViewById(R.id.login_title_to_register);
        loginToRegister.setOnClickListener(v -> {
            Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
            startActivity(intent);
        });
    }
    //点击登录
    private void clickLogin(){
        binding.loginLoginButton.setOnClickListener(v -> {
            //启动动画
            startAnimation();
            //逻辑登录
            loginLogic();
        });
    }

    //登录逻辑
    private void loginLogic(){
        //获取输入框的账号密码
        String account = etAccount.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        //输入判断有空
        if(StringUtil.isTwoExistEmpty(account,password)){
            //弹出DialogX对话框
            DialogXUtil.messageTipDialogX(getString(R.string.notice), getString(R.string.noAccountOrPassword), getString(R.string.confirm), this::stopAnimation);
        }

    }
    //点击取消
    private void clickCancel(){
        binding.loginCancelButton.setOnClickListener(v ->{
            //转到初始界面
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(intent);
        });
    }
    //启动动画
    private void startAnimation(){
        // 隐藏输入框
        mAccount.setVisibility(View.INVISIBLE);
        mPassword.setVisibility(View.INVISIBLE);
        AnimationUtil.inputAnimator(binding.loginInputLayout.getRoot(),mWidth,mHeight, binding.loginInputLayout.getRoot(), binding.layoutProgress.getRoot());
    }
    //停止动画
    protected void stopAnimation(){
        // 显示输入框
        mAccount.setVisibility(View.VISIBLE);
        mPassword.setVisibility(View.VISIBLE);
        AnimationUtil.recovery(binding.layoutProgress.getRoot(), binding.loginInputLayout.getRoot(),mAccount,mPassword);
    }
}

BaseActivity:

package com.lxz.myapp.activity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.lxz.myapp.R;

public class BaseActivity extends AppCompatActivity {
    public Context mContext;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
    }
    //封装一个Toast提示
    public void showToast(String msg){
        Toast.makeText(mContext,msg,Toast.LENGTH_SHORT).show();
    }

    //封装一个AlertDialog
    public void showAlertDialog(String title, String msg, String NBtn,DialogInterface.OnDismissListener dismissListener){
            AlertDialog.Builder builder = mContext != null ? new AlertDialog.Builder(mContext) : null;
            if (builder != null) {
                builder.setTitle(title);
                builder.setMessage(msg);
                builder.setNegativeButton(NBtn, (dialog, which) -> {
                    // 点击确定按钮后的操作
                    dialog.dismiss(); // 关闭对话框
                });

                // 设置对话框关闭监听器
                builder.setOnDismissListener(dismissListener);
                AlertDialog dialog = builder.create();
                if (dialog != null) {
                    dialog.show();
                }
            }
    }
}

RegisterActivity:

package com.lxz.myapp.activity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;

import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.events.EventHandler;
import com.lxz.myapp.MainActivity;
import com.lxz.myapp.R;
import com.lxz.myapp.databinding.ActivityRegisterBinding;
import com.lxz.myapp.utils.AnimationUtil;
import com.lxz.myapp.utils.DialogXUtil;
import com.lxz.myapp.utils.StringUtil;

import java.util.Timer;

public class RegisterActivity extends BaseActivity {
    private ActivityRegisterBinding binding;
    private float mWidth, mHeight;
    private TextInputEditText etAccount,etPassword;
    private LinearLayout mAccount,mPassword;

    public EventHandler eh; //事件接收器
    private Timer mTimeCount;//计时器

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityRegisterBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        mAccount = findViewById(R.id.register_input_layout_account);
        mPassword = findViewById(R.id.register_input_layout_psw);
        etAccount = findViewById(R.id.register_account_et);
        etPassword = findViewById(R.id.register_password_et);
        // 计算出控件的高与宽
        mWidth = binding.registerRegisterButton.getMeasuredWidth();
        mHeight = binding.registerRegisterButton.getMeasuredHeight();
        initView();
    }

    private void initView() {
        //点击注册
        clickRegister();
        //点击取消
        clickCancelOFRegister();
    }

    //点击注册
    private void clickRegister(){
        binding.registerRegisterButton.setOnClickListener(v -> {
            startAnimation();
            //逻辑注册
            registerLogic();
        });
    }

    //注册逻辑
    private void registerLogic() {
        //获取输入框的账号密码
        String account = etAccount.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        //输入判断有空
        if(StringUtil.isTwoExistEmpty(account,password)){
            //弹出DialogX对话框
            DialogXUtil.messageTipDialogX(getString(R.string.notice),
                    getString(R.string.noAccountOrPassword),
                    getString(R.string.confirm),
                    this::stopAnimation
            );
        }
    }

    //点击取消
    private void clickCancelOFRegister(){
        binding.registerCancelButton.setOnClickListener(v ->{
            //转到初始界面
            Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
            startActivity(intent);
        });
    }
    //启动加载动画
    private void startAnimation(){
        // 隐藏输入框
        mAccount.setVisibility(View.INVISIBLE);
        mPassword.setVisibility(View.INVISIBLE);
        AnimationUtil.inputAnimator(binding.registerInputLayout.getRoot(), mWidth, mHeight, binding.registerInputLayout.getRoot(), binding.layoutProgress.getRoot());
    }
    //停止加载动画
    private void stopAnimation(){
        // 显示输入框
        mAccount.setVisibility(View.VISIBLE);
        mPassword.setVisibility(View.VISIBLE);
        AnimationUtil.recovery(binding.layoutProgress.getRoot(), binding.registerInputLayout.getRoot(),mAccount,mPassword);
    }
}

工具类DialogXUtil:

package com.lxz.myapp.utils;

import android.widget.Button;

import com.kongzue.dialogx.DialogX;
import com.kongzue.dialogx.dialogs.InputDialog;
import com.kongzue.dialogx.dialogs.MessageDialog;
import com.kongzue.dialogx.dialogs.PopTip;
import com.kongzue.dialogx.dialogs.TipDialog;
import com.kongzue.dialogx.dialogs.WaitDialog;
import com.kongzue.dialogx.style.IOSStyle;
import com.kongzue.dialogx.style.MaterialStyle;

public class DialogXUtil {

    //消息提示框,标题、内容、确定按钮
    public static void messageTipDialogX(String title, String message, String okText, Runnable callback) {
        DialogX.globalStyle = IOSStyle.style();
        MessageDialog.show(title, message, okText)
                .setOkButton((baseDialog, v) -> {
                    if (callback != null) {
                        callback.run();
                    }
                    return false;
                });
    }

    //输入框
    public static void inputDialogX(Button btnInputDialog){
        DialogX.globalStyle = MaterialStyle.style();
        btnInputDialog.setOnClickListener(view -> new InputDialog("标题", "正文内容", "确定", "取消", "正在输入的文字")
                .setInputText("Hello World")
                .setOkButton((baseDialog, v, inputStr) -> {
                    PopTip.show("输入的内容:" + inputStr);
                    return false;
                })
                .show());
    }

    //弹出成功提示框
    public static void tipSuccessDialogX(String msg){
        //正确
        TipDialog.show(msg, WaitDialog.TYPE.SUCCESS);
    }
    //弹出失败提示框
    public static void tipErrorDialogX(String msg){
        //错误
        TipDialog.show(msg, WaitDialog.TYPE.ERROR);
    }


}

Gitee地址

demo

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自学后端转后厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值