Android自定義加載框效果
本文實(shí)例為大家分享了Android自定義加載框效果的具體代碼,供大家參考,具體內(nèi)容如下
效果圖
菊花圖標(biāo)(mipmap-xxhdpi)
加載框圓角背景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.ConstraintLayout android: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:id="@+id/iv" android:layout_width="35dp" android:layout_height="35dp" android:src="@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: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.widget import android.animation.ObjectAnimator import android.animation.ValueAnimator import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.Window import android.view.animation.LinearInterpolator import androidx.databinding.DataBindingUtil import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import com.blankj.utilcode.util.LogUtils import com.lzk.libcommon.R import 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)) //去掉Padding decorView.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 = msg if (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.VISIBLE if (!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() } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android將Bitmap對(duì)象保存到SD卡中的方法
這篇文章主要介紹了android將Bitmap對(duì)象保存到SD卡中的方法,涉及Android讀寫SD卡數(shù)據(jù)的方法,需要的朋友可以參考下2015-04-04Android模仿知乎的回答詳情頁(yè)的動(dòng)畫效果
這篇文章主要介紹了Android模仿“知乎”的回答詳情頁(yè)的動(dòng)畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02Android OkHttp Post上傳文件并且攜帶參數(shù)實(shí)例詳解
這篇文章主要介紹了Android OkHttp Post上傳文件并且攜帶參數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03Android?MaterialAlertDialogBuilder修改按鈕屬性
這篇文章主要介紹了Android?MaterialAlertDialogBuilder修改按鈕屬性實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11android通過(guò)bitmap生成新圖片關(guān)鍵性代碼
android通過(guò)bitmap生成新圖片具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-06-06基于DownloadManager的簡(jiǎn)單下載器編寫小結(jié)
Android自帶的DownloadManager是一個(gè)很好的下載文件的工具。該類在API level 9之后出現(xiàn),它已經(jīng)幫我們處理了下載失敗、重新下載等功能,整個(gè)下載過(guò)程全部交給系統(tǒng)負(fù)責(zé),不需要我們過(guò)多的處理,非常的nice。關(guān)鍵的是用起來(lái)也很簡(jiǎn)單,稍微封裝一下就可以幾句話搞定下載2017-12-12android獲取當(dāng)前手機(jī)號(hào)示例程序
這篇文章主要介紹了android如何獲取當(dāng)前手機(jī)號(hào)的方法,大家參考使用吧2013-11-11Android加載圖片內(nèi)存溢出問(wèn)題解決方法
這篇文章主要介紹了Android加載圖片內(nèi)存溢出問(wèn)題解決方法,本文講解使用BitmapFactory.Options解決內(nèi)存溢出問(wèn)題,需要的朋友可以參考下2015-06-06