ViewFlipper
调用startFlipping()方法,以后常常无法更新状态。
最佳方法:
核心:调用startFlipping()以后,每次更新播放图片ViewFlipper会依次调用以下方法:
setDisplayedChild()
showNext()
我们的方法:
1.重写ViewFlipper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package
com.example.viewflipertest;
import
android.content.Context;
import
android.util.AttributeSet;
import
android.widget.TextView;
public
class
ViewFlipper
extends
android.widget.ViewFlipper {
TextView textview=
null
;
public
ViewFlipper(Context context) {
super
(context);
}
public
ViewFlipper(Context context, AttributeSet attrs) {
super
(context, attrs);
}
/**
*
* @param textview 需要更新的数值对象
*/
public
void
addFlipperView(TextView textview) {
this
.textview=textview;
}
int
v=
1
;
@Override
public
void
setDisplayedChild(
int
whichChild) {
if
(textview!=
null
) {
if
(whichChild>=
3
) {
v=
1
;
}
else
{
v=v+
1
;
}
textview.setText(v+
""
);
}
super
.setDisplayedChild(whichChild);
}
}
|
2.xml引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<RelativeLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingBottom=
"@dimen/activity_vertical_margin"
android:paddingLeft=
"@dimen/activity_horizontal_margin"
android:paddingRight=
"@dimen/activity_horizontal_margin"
android:paddingTop=
"@dimen/activity_vertical_margin"
tools:context=
".MainActivity"
>
<!-- 播放图片 -->
<com.example.viewflipertest.ViewFlipper
android:id=
"@+id/details1111"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:persistentDrawingCache=
"animation"
android:flipInterval=
"5000"
android:autoStart=
"false"
/>
<!-- 改变数值 -->
<TextView
android:layout_below=
"@id/details1111"
android:id=
"@+id/action_flipper"
android:text=
"1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
</RelativeLayout>
|
3.activity当中引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package
com.example.viewflipertest;
import
android.app.Activity;
import
android.os.Bundle;
import
android.widget.ImageView;
import
android.widget.LinearLayout.LayoutParams;
import
android.widget.TextView;
public
class
MainActivity
extends
Activity {
int
c=
1
;
TextView textview =
null
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewFlipper viewFlipper =(ViewFlipper)findViewById(R.id.details1111);
textview =(TextView)findViewById(R.id.action_flipper);
LayoutParams params =
new
LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
ImageView imageview1 =
new
ImageView(
this
);
ImageView imageview2 =
new
ImageView(
this
);
ImageView imageview3 =
new
ImageView(
this
);
imageview1.setImageResource(R.drawable.welcom1);
imageview2.setImageResource(R.drawable.welcom2);
imageview3.setImageResource(R.drawable.welcom3);
imageview1.setLayoutParams(params);
imageview2.setLayoutParams(params);
imageview3.setLayoutParams(params);
viewFlipper.addView(imageview1);
viewFlipper.addView(imageview2);
viewFlipper.addView(imageview3);
viewFlipper.addFlipperView(textview);
viewFlipper.startFlipping();
// do{
// c +=1;
// System.out.println("------c="+c);
// }while(viewFlipper.isFlipping());
}
}
|
注意;
viewFlipper.addFlipperView(textview);
viewFlipper.startFlipping();
在开始调用startFlipping();方法之前,要先调用 viewFlipper中自定义的addFlipperView();方法。