Nowadays, many Android applications will guide how to use some features of the application after the first installation, which will provide a good user experience, it can help users better use certain functions of applications. In fact, this function has the same effect as the luncher function on the main Android interface, allowing you to drag left and right.
The following uses viewpager instances to demonstrate how to implement this function. Let's take a look at the demo structure:
Note: viewpager class is a class that implements smooth switching between the left and right screens. It is provided by Google. To use viewpager, first introduce the jar package of android-support-v4.jar. The libs folder in the project contains the android-support-v4.jar jar package. The package in the drawable folder contains image resource files.
The source code of each file in the project is as follows:
Main. xml source code:
01
<?
XML
Version
=
"1.0"
Encoding
=
"UTF-8"
?>
02
<
Framelayout
Xmlns: Android
=
Http://schemas.android.com/apk/res/android"
03
Android: layout_width
=
"Fill_parent"
04
Android: layout_height
=
"Fill_parent"
05
Android: Orientation
=
"Vertical"
>
06
07
<
Android. Support. v4.view. viewpager
08
Android: ID
=
"@ + ID/guidepages"
09
Android: layout_width
=
"Fill_parent"
10
Android: layout_height
=
"Wrap_content"
/>
11
12
<
Relativelayout
13
Android: layout_width
=
"Fill_parent"
14
Android: layout_height
=
"Wrap_content"
15
Android: Orientation
=
"Vertical"
>
16
<
Linearlayout
17
Android: ID
=
"@ + ID/viewgroup"
18
Android: layout_width
=
"Fill_parent"
19
Android: layout_height
=
"Wrap_content"
20
Android: layout_alignparentbottom
=
"True"
21
Android: layout_marginbottom
=
"30dp"
22
Android: gravity
=
"Center_horizontal"
23
Android: Orientation
=
"Horizontal"
>
24
</
Linearlayout
>
25
</
Relativelayout
>
26
27
</
Framelayout
>
Item01.xml source code:
01
<?
XML
Version
=
"1.0"
Encoding
=
"UTF-8"
?>
02
<
Linearlayout
Xmlns: Android
=
Http://schemas.android.com/apk/res/android"
03
Android: layout_width
=
"Fill_parent"
04
Android: layout_height
=
"Fill_parent"
05
Android: Orientation
=
"Vertical"
>
06
07
<
Imageview
08
Android: layout_width
=
"Fill_parent"
09
Android: layout_height
=
"Fill_parent"
10
Android: Background
=
"@ Drawable/feature_guide_0"
>
11
</
Imageview
>
12
13
</
Linearlayout
>
The source code of the item02.xml, item03.xml, and item04.xml layout files is the same as that of the item01.xml layout file, but the background image of the Android: Background attribute in imageview is different.
Guideviewdemoactivity. Java source code:
001
Package
Com. andyidea. guidedemo;
002
003
Import
Java. util. arraylist;
004
005
Import
Android. App. activity;
006
Import
Android. OS. Bundle;
007
Import
Android. OS. parcelable;
008
Import
Android. Support. v4.view. pageradapter;
009
Import
Android. Support. v4.view. viewpager;
010
Import
Android. Support. v4.view. viewpager. onpagechangelistener;
011
Import
Android. View. layoutinflater;
012
Import
Android. View. view;
013
Import
Android. View. viewgroup;
014
Import
Android. View. viewgroup. layoutparams;
015
Import
Android. View. window;
016
Import
Android. widget. imageview;
017
018
Public
Class
Guideviewdemoactivity
Extends
Activity {
019
020
Private
Viewpager;
021
Private
Arraylist <View> pageviews;
022
Private
Viewgroup main, group;
023
Private
Imageview;
024
Private
Imageview [] imageviews;
025
026
/** Called when the activity is first created .*/
027
@ Override
028
Public
Void
Oncreate (bundle savedinstancestate ){
029
Super
. Oncreate (savedinstancestate );
030
This
. Requestwindowfeature (window. feature_no_title );
031
032
Layoutinflater Inflater = getlayoutinflater ();
033
Pageviews =
New
Arraylist <View> ();
034
Pageviews. Add (Inflater. Inflate (R. layout. item01,
Null
));
035
Pageviews. Add (Inflater. Inflate (R. layout. item02,
Null
));
036
Pageviews. Add (Inflater. Inflate (R. layout. item03,
Null
));
037
Pageviews. Add (Inflater. Inflate (R. layout. item04,
Null
));
038
039
Imageviews =
New
Imageview [pageviews. Size ()];
040
Main = (viewgroup) Inflater. Inflate (R. layout. Main,
Null
);
041
042
// Group is the linearlayout in R. layou. Main that is responsible for wrapping small dots.
043
Group = (viewgroup) Main. findviewbyid (R. Id. viewgroup );
044
045
Viewpager = (viewpager) Main. findviewbyid (R. Id. guidepages );
046
047
For
(
Int
I =
0
; I <pageviews. Size (); I ++ ){
048
Imageview =
New
Imageview (guideviewdemoactivity.
This
);
049
Imageview. setlayoutparams (
New
Layoutparams (
20
,
20
));
050
Imageview. setpadding (
20
,
0
,
20
,
0
);
051
Imageviews [I] = imageview;
052
If
(I =
0
){
053
// The first image is selected by default.
054
Imageviews [I]. setbackgroundresource (R. drawable. page_indicator_focused );
055
}
Else
{
056
Imageviews [I]. setbackgroundresource (R. drawable. page_indicator );
057
}
058
Group. addview (imageviews [I]);
059
}
060
061
Setcontentview (main );
062
063
Viewpager. setadapter (
New
Guidepageadapter ());
064
Viewpager. setonpagechangelistener (
New
Guidepagechangelistener ());
065
}
066
067
/** Guide page adapter */
068
Class
Guidepageadapter
Extends
Pageradapter {
069
070
@ Override
071
Public
Int
Getcount (){
072
Return
Pageviews. Size ();
073
}
074
075
@ Override
076
Public
Boolean
Isviewfromobject (view arg0, object arg1 ){
077
Return
Arg0 = arg1;
078
}
079
080
@ Override
081
Public
Int
Getitemposition (Object object ){
082
// Todo auto-generated method stub
083
Return
Super
. Getitemposition (object );
084
}
085
086
@ Override
087
Public
Void
Destroyitem (view arg0,
Int
Arg1, object arg2 ){
088
// Todo auto-generated method stub
089
(Viewpager) arg0). removeview (pageviews. Get (arg1 ));
090
}
091
092
@ Override
093
Public
Object instantiateitem (view arg0,
Int
Arg1 ){
094
// Todo auto-generated method stub
095
(Viewpager) arg0). addview (pageviews. Get (arg1 ));
096
Return
Pageviews. Get (arg1 );
097
}
098
099
@ Override
100
Public
Void
Restorestate (parcelable arg0, classloader arg1 ){
101
// Todo auto-generated method stub
102
103
}
104
105
@ Override
106
Public
Parcelable savestate (){
107
// Todo auto-generated method stub
108
Return
Null
;
109
}
110
111
@ Override
112
Public
Void
Startupdate (view arg0 ){
113
// Todo auto-generated method stub
114
115
}
116
117
@ Override
118
Public
Void
Finishupdate (view arg0 ){
119
// Todo auto-generated method stub
120
121
}
122
}
123
124
/** Modify the listener on the guide page */
125
Class
Guidepagechangelistener
Implements
Onpagechangelistener {
126
127
@ Override
128
Public
Void
Onpagescrollstatechanged (
Int
Arg0 ){
129
// Todo auto-generated method stub
130
131
}
132
133
@ Override
134
Public
Void
Onpagescrolled (
Int
Arg0,
Float
Arg1,
Int
Arg2 ){
135
// Todo auto-generated method stub
136
137
}
138
139
@ Override
140
Public
Void
Onpageselected (
Int
Arg0 ){
141
For
(
Int
I =
0
; I <imageviews. length; I ++ ){
142
Imageviews [arg0]
143
. Setbackgroundresource (R. drawable. page_indicator_focused );
144
If
(Arg0! = I ){
145
Imageviews [I]
146
. Setbackgroundresource (R. drawable. page_indicator );
147
}
148
}
149
150
}
151
152
}
153
154
}
Run the precedingProgram, The effect is as follows:
So far, the viewpager component has been used to achieve the sliding (drag) effect between the left and right. This article is [Andy. Chen] original. Please indicate the source for reprinting. Thank you.