您的位置:首页 > 其它

AnimationDrawable---界面加载动画(一帧一帧的图片组成的动画)

2017-08-03 14:11 639 查看
效果如图所示:





1.准备好所需图片,一帧一帧的所有图片,然后在drawable中新建一个 animation.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="@mipmap/anim_1"
android:duration="100" />
<item
android:drawable="@mipmap/anim_2"
android:duration="100" />
<item
android:drawable="@mipmap/anim_3"
android:duration="100" />
<item
android:drawable="@mipmap/anim_4"
android:duration="100" />
<item
android:drawable="@mipmap/anim_5"
android:duration="100" />
<item
android:drawable="@mipmap/anim_6"
android:duration="100" />
<item
android:drawable="@mipmap/anim_7"
android:duration="100" />
<item
android:drawable="@mipmap/anim_8"
android:duration="100" />
<item
android:drawable="@mipmap/anim_9"
android:duration="100" />
<item
android:drawable="@mipmap/anim_10"
android:duration="100" />
<item
android:drawable="@mipmap/anim_11"
android:duration="100" />
<item
android:drawable="@mipmap/anim_12"
android:duration="100" />
<item
android:drawable="@mipmap/anim_13"
android:duration="100" />
<item
android:drawable="@mipmap/anim_14"
android:duration="100" />
<item
android:drawable="@mipmap/anim_15"
android:duration="100" />
<item
android:drawable="@mipmap/anim_16"
android:duration="100" />
<item
android:drawable="@mipmap/anim_17"
android:duration="100" />
<item
android:drawable="@mipmap/anim_18"
android:duration="100" />
<item
android:drawable="@mipmap/anim_19"
android:duration="100" />
<item
android:drawable="@mipmap/anim_20"
android:duration="100" />
<item
android:drawable="@mipmap/anim_21"
android:duration="100" />
<item
android:drawable="@mipmap/anim_22"
android:duration="100" />
<item
android:drawable="@mipmap/anim_23"
android:duration="100" />
<item
android:drawable="@mipmap/anim_24"
android:duration="100" />
<item
android:drawable="@mipmap/anim_25"
android:duration="100" />
<item
android:drawable="@mipmap/anim_26"
android:duration="100" />
<item
android:drawable="@mipmap/anim_27"
android:duration="100" />
<item
android:drawable="@mipmap/anim_28"
android:duration="100" />
<item
android:drawable="@mipmap/anim_29"
android:duration="100" />
<item
android:drawable="@mipmap/anim_30"
android:duration="100" />
<item
android:drawable="@mipmap/anim_31"
android:duration="100" />
<item
android:drawable="@mipmap/anim_32"
android:duration="100" />
<item
android:drawable="@mipmap/anim_33"
android:duration="100" />
<item
android:drawable="@mipmap/anim_34"
android:duration="100" />
<item
android:drawable="@mipmap/anim_35"
android:duration="100" />
<item
android:drawable="@mipmap/anim_36"
android:duration="100" />
<item
android:drawable="@mipmap/anim_37"
android:duration="100" />
<item
android:drawable="@mipmap/anim_38"
android:duration="100" />
<item
android:drawable="@mipmap/anim_39"
android:duration="100" />
</animation-list>


2.在style里添加一个对话框样式:

<style name="alert_dialog" parent="android:Theme.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.4</item>
</style>


3.对话框布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/img"
android:layout_centerInParent="true"
android:layout_width="60dp"
android:layout_height="60dp" />

<TextView
android:layout_centerInParent="true"
android:layout_below="@+id/img"
android:layout_marginTop="10dp"
android:text="正在加载..."
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>


4.自定义LoadingDialog extends Dialog:

public class LoadingDialog extends Dialog {

private AnimationDrawable anim;

public LoadingDialog(Context context) {
super(context, R.style.alert_dialog);// R.style.alert_dialog自定义的style
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_animation);

ImageView img = (ImageView) findViewById(R.id.img);
img.setImageResource(R.drawable.animation);

anim = (AnimationDrawable) img.getDrawable();
anim.start();
}

@Override
public void dismiss() {
super.dismiss();
anim.stop();
}

@Override
public void show() {
super.show();
WindowManager windowManager = getWindow().getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = this.getWindow().getAttributes();
lp.width = (int)(display.getWidth());
lp.height = (int)(display.getHeight());
this.getWindow().setAttributes(lp);
}
}


5.activity中直接使用此对话框(此处使用一个延迟定时来模拟获取数据的整个过程,先把文字隐藏,等时间到了后显示出来):

public class HomeActivity extends AppCompatActivity {

private LoadingDialog dialog;
private TextView tv_text;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

tv_text = (TextView) this.findViewById(R.id.tv_text);

//显示加载动画
dialog = new LoadingDialog(HomeActivity.this);
dialog.show();

new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
runOnUiThread(new Runnable() {
@Override
public void run() {
//取消加载动画
dialog.dismiss();
tv_text.setVisibility(View.VISIBLE);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}


补充:



这个帖子讲得很好,还介绍了drawable其他的标签

Android样式的开发:drawable汇总篇 - 安卓 - 伯乐在线 http://android.jobbole.com/82117/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: