Android 加载动画逐帧动画透明弹窗
1. 效果截图#
2. LoadingDialog代码#
public class LoadingDialog extends Dialog {
private AnimationDrawable mAnimation;
private final String mLoadingTitle;
private final int layout;
public LoadingDialog(Context context, String content, int layout) {
super(context);
this.mLoadingTitle = content;
this.layout = layout;
//点击外围取消
setCanceledOnTouchOutside(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置窗口布局
setContentView(R.layout.progress_dialog);
ImageView mImageView = findViewById(R.id.loadingIv);
//设置动画资源
mImageView.setImageResource(layout);
mAnimation = (AnimationDrawable) mImageView.getDrawable();
// 启动动态图话
mImageView.postDelayed(mAnimation::start, 100);
TextView mLoadingTv = findViewById(R.id.loadingTv);
//设置加载文字
mLoadingTv.setText(mLoadingTitle);
// <color name="transparent">#00FFFFFF</color>
//设置透明
getWindow().setBackgroundDrawableResource(R.color.transparent);
}
}
3. 调用窗口代码#
public class MainActivity extends AppCompatActivity {
private LoadingDialog loadingDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.show).setOnClickListener(v -> {
if (loadingDialog == null) {
//创建
loadingDialog = new LoadingDialog(MainActivity.this, "正在加载", R.drawable.anim_loading);
}
//调用
loadingDialog.show();
});
}
}
4. LoadingDialog布局——progress_dialog.xml#
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/loadingIv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/loading" />
<TextView
android:id="@+id/loadingTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textSize="20sp" />
</LinearLayout>
5. 调用窗口布局——activity_main.xml#
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/black"
android:text="@string/show"
android:textColor="#ffffff" />
</LinearLayout>
6. 动画文件——anim_loading.xml#
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/loading_01"
android:duration="200"/>
<item
android:drawable="@drawable/loading_02"
android:duration="200"/>
<item
android:drawable="@drawable/loading_03"
android:duration="200"/>
<item
android:drawable="@drawable/loading_04"
android:duration="200"/>
<item
android:drawable="@drawable/loading_05"
android:duration="200"/>
<item
android:drawable="@drawable/loading_06"
android:duration="200"/>
<item
android:drawable="@drawable/loading_07"
android:duration="200"/>
<item
android:drawable="@drawable/loading_08"
android:duration="200"/>
<item
android:drawable="@drawable/loading_09"
android:duration="200"/>
<item
android:drawable="@drawable/loading_10"
android:duration="200"/>
<item
android:drawable="@drawable/loading_11"
android:duration="200"/>
<item
android:drawable="@drawable/loading_12"
android:duration="200"/>
</animation-list>
7. 透明色彩#
<color name="transparent">#00FFFFFF</color>
参考链接:https://www.runoob.com/w3cnote/android-tutorial-progressbar.html
源码及素材地址:https://github.com/WindSnowLi/android-tools
源码及素材地址:https://gitee.com/windsnowli/android-tools
作者:Esofar
出处:https://www.cnblogs.com/WindSnowLi/p/16998217.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库