01
package wht.android.loading;
02
03
import android.content.Context;
04
import android.graphics.Canvas;
05
import android.util.AttributeSet;
06
import android.widget.ImageView;
07
08
public class LoadingView extends ImageView implements Runnable
09
{
10
private boolean isStop = false;
11
12
private int[] imageIds;
13
private int index = 0;
14
private int length = 1;
15
16
public LoadingView(Context context)
17
{
18
this(context, null);
19
}
20
21
public LoadingView(Context context, AttributeSet attrs)
22
{
23
super(context, attrs);
24
}
25
26
public void setImageIds(int[] imageId)
27
{
28
this.imageIds = imageId;
29
if(imageIds != null && imageIds.length > 0)
30
{
31
length = imageIds.length;
32
}
33
}
34
35
@Override
36
protected void onDetachedFromWindow()
37
{
38
// TODO Auto-generated method stub
39
super.onDetachedFromWindow();
40
isStop = true;
41
}
42
43
@Override
44
protected void onDraw(Canvas canvas)
45
{
46
// TODO Auto-generated method stub
47
super.onDraw(canvas);
48
if(imageIds != null && imageIds.length > 0)
49
{
50
this.setImageResource(imageIds[index]);
51
}
52
}
53
54
@Override
55
public void run()
56
{
57
while(!isStop)
58
{
59
index = ++index % length;
60
postInvalidate();
61
try
62
{
63
Thread.sleep(400);
64
}
65
catch (InterruptedException e)
66
{
67
e.printStackTrace();
68
}
69
}
70
}
71
72
public void startAnim()
73
{
74
new Thread(this).start();
75
}
76
77
}
01
package wht.android.loading;
02
03
import android.app.Activity;
04
import android.os.Bundle;
05
06
public class MainActivity extends Activity
07
{
08
09
private LoadingView main_imageview;
10
11
@Override
12
public void onCreate(Bundle savedInstanceState)
13
{
14
super.onCreate(savedInstanceState);
15
setContentView(R.layout.main);
16
main_imageview = (LoadingView)findViewById(R.id.main_imageview);
17
initLoadingImages();
18
19
new Thread()
20
{
21
@Override
22
public void run()
23
{
24
main_imageview.startAnim();
25
}
26
}.start();
27
28
}
29
30
private void initLoadingImages()
31
{
32
int[] imageIds = new int[6];
33
imageIds[0] = R.drawable.loader_frame_1;
34
imageIds[1] = R.drawable.loader_frame_2;
35
imageIds[2] = R.drawable.loader_frame_3;
36
imageIds[3] = R.drawable.loader_frame_4;
37
imageIds[4] = R.drawable.loader_frame_5;
38
imageIds[5] = R.drawable.loader_frame_6;
39
40
main_imageview.setImageIds(imageIds);
41
}
42
}
01
<?xml version="1.0" encoding="utf-8"?>
02
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03
android:orientation="vertical" android:layout_width="fill_parent"
04
android:layout_height="fill_parent" android:background="#e1e1e1">
05
<wht.android.loading.LoadingView
06
android:layout_gravity="center_horizontal"android:layout_height="wrap_content"
07
android:id="@+id/main_imageview"android:src="@drawable/loader_frame_1"
08
android:layout_marginTop="190dp"android:layout_width="wrap_content"
09
></wht.android.loading.LoadingView>
10
11
<TextView
12
android:layout_width="wrap_content"
13
android:layout_height="wrap_content"
14
android:text="启动中..."
15
android:layout_marginTop="10dip"
16
android:textColor="#666666"
17
android:layout_gravity="center_horizontal"
18
android:textSize="20sp"
19
/>
20
</LinearLayout>