鸿蒙自定义loading组件代码示例,用鸿蒙API12写
时间: 2024-09-14 22:15:00 浏览: 152
Vue自定义全局Toast和Loading的实例详解
5星 · 资源好评率100%
在HarmonyOS (鸿蒙) API 12中,自定义Loading组件通常会涉及到创建一个界面元素并在需要展示加载状态的地方使用它。以下是一个简单的示例,假设我们正在创建一个`CustomLoadingView`:
```java
// 首先,创建一个新类继承自HarmonyOS的View基类
import com.huawei.hms.ui.appwidgets.widget.HMSAppWidgetHost;
import com.huawei.hms.ui.appwidgets.widget.AppWidgetProvider;
public class CustomLoadingView extends AppWidgetHost {
// 公共构造函数,传入宿主Activity实例
public CustomLoadingView(Context context) {
super(context, new ComponentName("your_package_name", "com.your_custom_loading_view"));
}
// 在onUpdate()方法中显示或隐藏加载视图
@Override
public void onUpdate(int appWidgetId, int[] oldWidgetIds) {
super.onUpdate(appWidgetId, oldWidgetIds);
if (mContext == null) {
return;
}
// 创建一个圆形进度条作为加载指示器
LoadingIndicator loadingIndicator = new LoadingIndicator();
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
loadingIndicator.setLayoutParams(layoutParams);
// 添加到视图中
((LinearLayout)mRootView).addView(loadingIndicator);
// 设置动画状态,例如开始、暂停或完成
loadingIndicator.startAnimation(AnimationUtils.LoadState_LOADING);
}
// 用于显示加载动画的内部类
private static class LoadingIndicator extends View {
// ...在这里添加你的自定义加载动画绘制代码
// 开始、暂停和完成动画的方法
public void startAnimation(LoadingState state) {
switch (state) {
case LOADING:
// 显示加载动画
break;
case PAUSED:
// 暂停动画
break;
case COMPLETED:
// 完成并隐藏动画
animate().alpha(0f).setDuration(500).start();
setVisibility(View.GONE);
break;
}
}
}
// 定义枚举表示加载状态
enum LoadingState {
LOADING, PAUSED, COMPLETED
}
}
// 使用这个自定义视图时,只需将其添加到布局或通过AppWidgetManager更新
```
阅读全文