Android自定义加载框效果
Android自定义加载框效果,博智网带你了解详细信息 。
本文实例为大家分享了Android自定义加载框效果的具体代码,供大家参考,具体内容如下
效果图



加载框圆角背景drawable
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><corners android:radius="12dp" /><solid android:color="@color/transparent_black"/></shape>
布局文件
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"><data></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:orientation="vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/bg_message_dialog"android:minWidth="132dp"android:minHeight="100dp"android:padding="15dp"><ImageViewandroid:id="@+id/iv"android:layout_width="35dp"android:layout_height="35dp"android:src="http://img1.wwwbaike.com/220918/0421546360-3.jpg"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintBottom_toTopOf="@id/tv"/><TextViewandroid:id="@+id/tv"android:layout_width="0dp"android:layout_height="wrap_content"android:textSize="12sp"android:textColor="@color/white"android:layout_marginTop="15dp"android:text="@string/loading"android:lineSpacingExtra="8dp"android:gravity="center_horizontal"app:layout_constraintTop_toBottomOf="@id/iv"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintBottom_toBottomOf="parent"/></androidx.constraintlayout.widget.ConstraintLayout></layout>
LoadingDialog.kt
package com.lzk.libcommon.widgetimport android.animation.ObjectAnimatorimport android.animation.ValueAnimatorimport android.graphics.Colorimport android.graphics.drawable.ColorDrawableimport android.os.Bundleimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.view.Windowimport android.view.animation.LinearInterpolatorimport androidx.databinding.DataBindingUtilimport androidx.fragment.app.DialogFragmentimport androidx.fragment.app.FragmentManagerimport com.blankj.utilcode.util.LogUtilsimport com.lzk.libcommon.Rimport com.lzk.libcommon.databinding.ViewLoadingDialogBinding/** * @Author: LiaoZhongKai * @Date: 2021/7/14 9:04 * @Description: 加载框 */class LoadingDialog: DialogFragment() {private var mTips: String? = nullprivate lateinit var mLoadingDialogBinding: ViewLoadingDialogBindingprivate lateinit var mAnimation: ObjectAnimatoroverride fun onStart() {super.onStart()//去掉DialogFragment外部的背景色dialog?.window?.apply {attributes = attributes.apply {//======================这里设置背景阴影透明度===============//======================0是全透明===========================dimAmount = 0.0f}}}override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View {mLoadingDialogBinding = DataBindingUtil.inflate(inflater, R.layout.view_loading_dialog,container,false)dialog?.apply {requestWindowFeature(Window.FEATURE_NO_TITLE)setCanceledOnTouchOutside(false)window?.apply {//去掉DialogFragment内部的背景色setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))//去掉PaddingdecorView.setPadding(0,0,0,0)}}return mLoadingDialogBinding.root}override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)rotate()setTips(mTips)}private fun rotate(){mAnimation = ObjectAnimator.ofFloat(mLoadingDialogBinding.iv,"rotation",360f).apply {repeatCount = ObjectAnimator.INFINITErepeatMode = ValueAnimator.RESTARTinterpolator = LinearInterpolator()duration = 1000}mAnimation.start()}override fun onDestroyView() {super.onDestroyView()mAnimation.cancel()}//显示fun showDialog(fragmentManager: FragmentManager, msg: String? = null){mTips = msgif (isVisible){dismiss()}show(fragmentManager,"")}//隐藏fun dismissDialog(){if (isAdded){dismiss()mTips = null}}/*** 设置加载提示文字*/private fun setTips(msg: String?): LoadingDialog{mLoadingDialogBinding.tv.visibility = if (msg.isNullOrEmpty()) View.GONE else View.VISIBLEif (!msg.isNullOrEmpty()){mLoadingDialogBinding.tv.text = msg}return this}}
基类封装
abstract class BaseVMActivity<T: ViewDataBinding,VM: BaseViewModel> : AppCompatActivity(){ private var mLoadingDialog: LoadingDialog? = nulloverride fun onDestroy() {super.onDestroy()mLoadingDialog?.dismissDialog()mLoadingDialog = null} /*** 显示加载弹框*/fun showLoadingDialog(msg: String? = null){mLoadingDialog = LoadingDialog()mLoadingDialog!!.showDialog(supportFragmentManager,msg)}/*** 隐藏加载弹框*/fun dismissLoadingDialog(){mLoadingDialog?.dismissDialog()}}
推荐阅读
- 怎么改手机ip
- 自定义铃声怎么设置
- 微信自定义在线状态方法 微信状态怎么改
- 王者荣耀cdk在哪里兑换
- gta5一直加载怎么办
- 自定义类的数组初始值是什么
- word怎么加自定义花边
- 微视频怎么剪辑
- 桌面图标如何自定义排列
- 如何导出安卓手机自定义的壁纸
