之前在技术问答上面看到一个提问 “加载中…” 后面三个点是动态的,这么一个效果实现。想来想去,好像没想到好的处理方式。
尝试了一下,以一个最笨的方式实现了。先来看一下效果 :
我是通过自定义一个Dialog,加载中的效果,是在Dialog内部实现的,进度还是从Activity里面控制的。
下面是Dialog实现类:
public class CustomDialog extends AlertDialog {
public CustomDialog(Context context) {
super(context);
}
private TextView tv_loading
在Android开发中,有时我们需要创建具有独特视觉效果和交互方式的自定义Dialog,以提供更好的用户体验。本示例介绍如何自定义一个Dialog以实现“加载中”文字后面跟随动态点的效果。这种效果常见于网络请求或数据加载时,让用户知道应用正在进行后台操作。
我们创建一个名为`CustomDialog`的类,它继承自`AlertDialog`。在这个类中,我们将实现自定义Dialog的逻辑。`CustomDialog`的构造函数接收一个`Context`参数,用于初始化对话框。在这个构造函数中,我们调用`super(context)`来初始化父类。
接下来,我们需要在`onCreate()`方法中设置Dialog的内容视图。这个方法会在Dialog被创建时调用。在这里,我们加载自定义的布局文件`R.layout.dialog_progress`,并找到布局中的`TextView`和`ProgressBar`组件。为了使Dialog适应屏幕宽度,我们还设置了Dialog的宽度为屏幕宽度的80%。
然后,我们创建了一个`Timer`对象来实现动态点的循环显示。`TimerTask`每300毫秒执行一次,更新`TextView`的文字。`Handler`负责在主线程中更新UI,通过切换`count`的值来改变文字状态:“加载中.”、“加载中..”、“加载中...”。当`count`超过3时,将其重置为1,确保点的循环效果。
`OnDismissListener`用于在Dialog关闭时取消`Timer`,防止内存泄漏。
我们提供了一个`setProgress()`方法,允许外部设置`ProgressBar`的进度。当进度达到100%,则自动关闭Dialog。
布局文件`dialog_progress.xml`非常简单,包含一个`LinearLayout`作为根视图,内含一个`TextView`和一个`ProgressBar`。`TextView`用于显示“加载中”文字和动态点,而`ProgressBar`则展示加载进度。
总结起来,自定义`Dialog`实现文字动态加载效果主要涉及以下几个步骤:
1. 创建一个继承自`AlertDialog`的类。
2. 在`onCreate()`方法中设置内容视图并找到需要的组件。
3. 使用`Timer`和`Handler`来实现动态效果。
4. 添加必要的监听器和方法以控制Dialog的行为。
这个简单的示例展示了Android自定义Dialog的强大功能,开发者可以根据实际需求进行更复杂的定制,例如添加动画、更改样式或实现更复杂的交互。通过自定义Dialog,可以为用户提供更加直观和有趣的用户体验。