Android 实现Loading弹窗

这篇具有很好参考价值的文章主要介绍了Android 实现Loading弹窗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总结下一个简单的需求,后续需要用到的时候可以直接用。

在我们网络请求,异步加载数据,等待函数回调,数据库的操作等耗时的过程中,这个时候,界面在等待返回数据来进行展示,此时加上一个loading弹窗会显得有好很多。

在一些情况下不加的话,会导致一些后果:

1.用户无法感知我们正在进行的操作,因为此时UI在等待数据返回渲染。

2.ANR,在某些情况下,如果不屏蔽用户点击,用户的其他操作会导致我们的操作中断,甚至导致ANR

那么我一般会用到两种loading弹窗

1.系统的Loading加载弹窗,方便快捷,在不做特定的UI需要下,实现快。

import android.app.ProgressDialog;
import android.content.Context;

public class ProgressDialogUtils {
    private static ProgressDialog progressDialog;//ProgressDialog这个对象你从上面的导入也可以看到,这是Android库自带的

    public static void showProgressDialog(Context context, String message) {
        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage(message);
        progressDialog.setCancelable(false);
        progressDialog.show();
    }

    public static void hideProgressDialog() {
        if (progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
    }
}

2.第二种自定义的loading弹窗

首先做一个XML布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/transparent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="148dp"
        android:layout_height="107dp"
        android:id="@+id/loading_container"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:background="@drawable/gray_a30_c8_bg"
        android:alpha="0.8">
        
        <androidx.appcompat.widget.AppCompatImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/loading_img"
            android:src="@mipmap/ic_loading_trans"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginTop="25dp"
            app:layout_constraintTop_toTopOf="parent"/>

        <androidx.appcompat.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="12sp"
            android:text="Translating..."
            android:textColor="#E3E6E8"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginBottom="20dp"/>
        
        
        
        
    </androidx.constraintlayout.widget.ConstraintLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

界面展示如下:

android loading,Android UI,Android开发小功能点,android

2.然后自定义一个Dialog,给图片加一个旋转的动画


import android.app.Dialog
import android.content.Context
import android.graphics.drawable.ColorDrawable
import android.view.Gravity
import android.view.Window
import android.view.WindowManager
import android.view.animation.Animation
import android.view.animation.LinearInterpolator
import android.view.animation.RotateAnimation
import android.widget.ImageView
import android.widget.LinearLayout
import androidx.constraintlayout.widget.ConstraintLayout
import com.example.translateapp.R

class LoadingDialog(context: Context) : Dialog(context) {

    init {
        init()
    }

    private fun init() {
        requestWindowFeature(Window.FEATURE_NO_TITLE)
        setContentView(R.layout.dialog_loading)

        // 设置背景透明
        window?.setBackgroundDrawable(ColorDrawable(android.graphics.Color.TRANSPARENT))

        // 设置全屏
        window?.setLayout(
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.MATCH_PARENT
        )
        window?.setGravity(Gravity.CENTER)

        // 添加旋转的loading图片
        val loadingImage: ImageView = findViewById(R.id.loading_img)


        // 添加旋转动画
        val rotateAnimation = RotateAnimation(
            0f, 360f,
            Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f
        )
        rotateAnimation.duration = 1000
        rotateAnimation.interpolator = LinearInterpolator()
        rotateAnimation.repeatCount = Animation.INFINITE
        loadingImage.startAnimation(rotateAnimation)
    }

    override fun onBackPressed() {
        // 不可取消
    }
}

3.调用:

var loadingDialog = LoadingDialog(this)

loadingDialog.show()

loadingDialog.dismiss()

 文章来源地址https://www.toymoban.com/news/detail-632890.html

到了这里,关于Android 实现Loading弹窗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 13.0 SystemUI增加低电量弹窗功能

    在13.0系统定制开发rom的产品时,对于低电量提醒也是个很好的体验,由于产品要求在低电量的时候增加个弹窗提醒用户电量低及时充电,所以就开发了这个功能 在SystemUI的启动流程,在SystemServer的startOtherServices方法中,会启动SystemUIService服务,SystemUIService服务的onCreate方法会

    2024年02月05日
    浏览(47)
  • element-ui全局添加loading效果

    前言 在我们的平时的工作中,在前后端交互的时候,为了提高页面的观赏性和用户的体验,我们会在页面上添加loading来阻止用户操作来等待接口的返回,这个时候我们会考虑到全局loading还是局部loading。 需要用到的第三方插件 首先我们需要引入element-ui的Loading组件,这个组

    2024年02月11日
    浏览(54)
  • element-ui 自定义loading加载样式

    element-ui 中的 loading 加载功能,默认是全屏加载效果, 设置局部,需要自定义样式,自定义的方法如下:

    2024年02月11日
    浏览(51)
  • Android开发——实现简易登录功能

     

    2024年04月23日
    浏览(40)
  • element UI中loading加载框的花式用法

    前言:           前端为了优化体验效果必不可少的就是加载框loading的使用。接口是异步的,获取数据是需要时间的,万一网络再卡顿下,总不能让用户干等着没数据的页面。那loading就必不可少了! 一.   常规使用(进入页面加载使用,针对某一部分,比如页面中的表格

    2024年02月10日
    浏览(55)
  • vue版本升级导致vant这个UI组件中的loading失效问题

    最近遇到了一个问题,就是项目中loading加载突然不能用了。 这个项目是老项目, vue2.x+vant,loading加载 采用的是vant提供的UI组件。 但为什么不能用了呢,因为一个小伙伴把package-lock.json这个文件删除了。 为什么会把 package-lock.json 这个文件删除了呢?因为公司有安全扫描,扫

    2023年04月22日
    浏览(40)
  • android AccessibilityService无障碍功能开发,实现自动化测试

    android AccessibilityService无障碍功能开发,实现自动化测试,这里使用抖音为例子,仅供技术研究学习使用。 使用方法 安装好APP后,需要打开无障碍功能,打开后,在次打开抖音APP,随便找一个直播间,上下滑动切换直接后,实现模拟点击屏幕,可以自动完成关注。 代码如下

    2024年02月12日
    浏览(55)
  • android开发使用OkHttp自带的WebSocket实现IM功能

    目录 一、背景 二、在项目中添加依赖包 三、框架调用 1、配置OkHttpClient  2、调用Url,构建WebSocket请求 3、建立连接 4、使用WebSocket对象发送消息     android app开发经常会有IM需求,很多新手不晓得如何入手,难点在于通讯不中断。其实android发展到今天,很多技术都很完善,有

    2024年02月08日
    浏览(40)
  • Android开发之实现简单的用户登录及登陆界面的UI设计(五)

    登陆界面的UI设计 编写Java代码,进行简单的用户账号和密码判断

    2024年02月11日
    浏览(50)
  • flutter开发实战-旋转loading指示器

    flutter开发实战-旋转loading指示器。 有些时候我们可能会需要一些复杂的动画,这些动画可能由一个动画序列或重叠的动画组成。一个动画组合在不同阶段包含了多种动画,要实现这种效果,需要使用交织动画(Stagger Animation)实现会比较方法。 实现旋转loading指示器代码 // 旋

    2024年02月14日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包