av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Android自定義加載框效果

瀏覽:5日期:2023-12-10 17:50:59

本文實(shí)例為大家分享了Android自定義加載框效果的具體代碼,供大家參考,具體內(nèi)容如下

效果圖

Android自定義加載框效果

菊花圖標(biāo)(mipmap-xxhdpi)

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'><ImageView android: android:layout_width='35dp' android:layout_height='35dp' android:src='http://m.4tl426be.cn/bcjs/@mipmap/ic_loading' app:layout_constraintTop_toTopOf='parent' app:layout_constraintStart_toStartOf='parent' app:layout_constraintEnd_toEndOf='parent' app:layout_constraintBottom_toTopOf='@id/tv'/><TextView android: 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? = null private lateinit var mLoadingDialogBinding: ViewLoadingDialogBinding private lateinit var mAnimation: ObjectAnimator override fun onStart() {super.onStart()//去掉DialogFragment外部的背景色dialog?.window?.apply { attributes = attributes.apply { //======================這里設(shè)置背景陰影透明度=============== //======================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內(nèi)部的背景色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.INFINITE repeatMode = ValueAnimator.RESTART interpolator = 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} } /** * 設(shè)置加載提示文字 */ 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? = null override fun onDestroy() {super.onDestroy()mLoadingDialog?.dismissDialog()mLoadingDialog = null } /** * 顯示加載彈框 */ fun showLoadingDialog(msg: String? = null){mLoadingDialog = LoadingDialog()mLoadingDialog!!.showDialog(supportFragmentManager,msg) } /** * 隱藏加載彈框 */ fun dismissLoadingDialog(){mLoadingDialog?.dismissDialog() }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 国产精品视频久久 | 国产一在线观看 | 精品国产乱码久久久 | 国产精品视频97 | 国产精品久久久久久久久久三级 | 精品国产乱码久久久久久中文 | 亚洲精品国产电影 | 久久久无码精品亚洲日韩按摩 | 国产午夜久久久 | 国产成人精品一区二区三 | 日本不卡一二三 | 日韩成人一区 | 久草视频在线播放 | 欧美精品乱码99久久影院 | 亚洲资源站 | 国产高清视频一区 | 欧美日韩一区二区在线 | 国产精品久久久久aaaa | 久久亚洲欧美日韩精品专区 | 中文字幕亚洲精品 | 中文字幕精品视频 | 国产精品一区二区三区四区 | 国产精品一区二区视频 | 亚洲欧洲成人在线 | 天天躁日日躁xxxxaaaa | 精品国产31久久久久久 | www在线视频 | 女生羞羞视频 | 不卡一区二区三区四区 | 美女视频一区 | 欧美日批| 草草视频在线观看 | 欧美日韩精品一区二区三区四区 | 99国产精品99久久久久久粉嫩 | 国产亚洲精品久久午夜玫瑰园 | 国产精品久久久 | 午夜成人在线视频 | 超碰精品在线 | 久草视频2| 国产精品久久久99 | 婷婷五月色综合香五月 |