本文實例為大家分享了Android Viewpager輪播廣告圖的具體代碼,供大家參考,具體內容如下
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
|
< RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = "${relativePackage}.${activityClass}" > < android.support.v4.view.ViewPager android:id = "@+id/viewpager_main" android:layout_width = "match_parent" android:layout_height = "180dp" ></ android.support.v4.view.ViewPager > < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" android:layout_alignBottom = "@id/viewpager_main" android:background = "#44000000" > < TextView android:id = "@+id/text_main_tatle" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:padding = "3dp" android:gravity = "center_horizontal" android:text = "廣告標題" android:textColor = "#fff" /> < LinearLayout android:id = "@+id/ll_main_point_group" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:orientation = "horizontal" android:layout_gravity = "center_horizontal" ></ LinearLayout > </ LinearLayout > </ RelativeLayout > |
主代碼寫
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
package com.example.viewpager_text2; import java.util.ArrayList; import android.R.integer; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { ViewPager viewPager; TextView text_main_tatle; LinearLayout ll_main_point_group; ArrayList <ImageView>imageviews; //圖片資源 int [] imageids={ R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, }; //圖片的標題集合 String [] imagetion={ "有型有范" , "周末放假" , "家電買一送一" , "預約迎新機" , "京東火鍋節" }; int preposition= 0 ; //設置高亮的位置 Handler handler= new Handler(){ public void handleMessage(android.os.Message msg) { int item=viewPager.getCurrentItem()+ 1 ; viewPager.setCurrentItem(item); //延遲發消息 handler.sendEmptyMessageDelayed( 0 , 3000 ); }; }; boolean isdragging= false ; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); //加載布局初始化 viewPager=(ViewPager) findViewById(R.id.viewpager_main); text_main_tatle=(TextView) findViewById(R.id.text_main_tatle); ll_main_point_group=(LinearLayout) findViewById(R.id.ll_main_point_group); // listview 的使用 // 1,在布局中文件定義viewpager // 2,在代碼中實例化Viewpager // 3,準備數據 imageviews= new ArrayList<ImageView>(); for ( int i= 0 ;i<imageids.length;i++){ ImageView imageview= new ImageView( this ); imageview.setBackgroundResource(imageids[i]); //添加到集合中 imageviews.add(imageview); //添加小圓點 ImageView imageview1= new ImageView( this ); imageview1.setBackgroundResource(R.drawable.xuna); LinearLayout.LayoutParams par= new LinearLayout.LayoutParams( 8 , 8 ); if (i== 0 ){ imageview1.setEnabled( true ); //顯示紅色 } else { imageview1.setEnabled( false ); //顯示灰色 par.leftMargin= 8 ; } ll_main_point_group.addView(imageview1); } // 4,設置適配器(pageradapter)-Item布局-綁定數據 viewPager.setAdapter( new Mypager()); viewPager.setOnPageChangeListener( new myon()); //設置中間位置,要保證是imageview的整數倍數 int item=Integer.MAX_VALUE/ 2 - Integer.MAX_VALUE/ 2 % imageviews.size(); viewPager.setCurrentItem(item); text_main_tatle.setText(imagetion[preposition]); //延遲發消息 handler.sendEmptyMessageDelayed( 0 , 3000 ); } class myon implements OnPageChangeListener { //當前頁面滾動變化的時候會回調此方法 // 靜止-->滑動 或 滑動-->靜止 或 靜止-->拖拽 @Override public void onPageScrollStateChanged( int arg0) { // TODO Auto-generated method stub if (arg0==ViewPager.SCROLL_STATE_DRAGGING){ //拖拽 isdragging= true ; } else if (arg0==ViewPager.SCROLL_STATE_SETTLING){ //滾動 } else if (arg0==ViewPager.SCROLL_STATE_IDLE&& isdragging){ //靜止 isdragging= false ; handler.removeCallbacksAndMessages( null ); handler.sendEmptyMessageDelayed( 0 , 3000 ); } } // 當前頁面滾動的時候回調此方法 // arg0 當期頁面的位置 // arg1滑動頁面的百分比 // arg2 在屏幕上滑動的像素 @Override public void onPageScrolled( int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } //當某個界面被選中時的回調方法 // arg0本選中頁面的位置 @Override public void onPageSelected( int arg0) { // TODO Auto-generated method stub int realpostion=arg0%imageviews.size(); //設置對應頁面的文本信息 text_main_tatle.setText(imagetion[realpostion]); //壩上一個高亮的設置成灰色 ll_main_point_group.getChildAt(preposition) .setEnabled( false ); //當前設置成紅色 ll_main_point_group.getChildAt(realpostion) .setEnabled( true ); preposition=realpostion; } } class Mypager extends PagerAdapter{ //得到圖片的總數 @Override public int getCount() { // TODO Auto-generated method stub // return imageviews.size(); return Integer.MAX_VALUE; //int類型的最大值 } //相當于getView的方法 //container Viewpager自身 //position 當前實例化頁面的位置(下標) @Override public Object instantiateItem(ViewGroup container, int position) { int realPostion=position% imageviews.size(); // TODO Auto-generated method stub ImageView imageview = imageviews.get(realPostion); container.addView(imageview); //添加到Viewpager中 imageview.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //手指按下時的操作 handler.removeCallbacksAndMessages( null ); break ; case MotionEvent.ACTION_MOVE: //手指移動時的操作 break ; case MotionEvent.ACTION_CANCEL: //事件取消 handler.removeCallbacksAndMessages( null ); handler.sendEmptyMessageDelayed( 0 , 3000 ); break ; case MotionEvent.ACTION_UP: //手指抬起時的操作 handler.removeCallbacksAndMessages( null ); handler.sendEmptyMessageDelayed( 0 , 3000 ); break ; } return false ; } }); imageview.setTag(realPostion); imageview.setOnClickListener( new OnClickListener() { @SuppressLint ( "ShowToast" ) @Override public void onClick(View v) { // TODO Auto-generated method stub int position = (Integer) v.getTag(); String text=imagetion[position]; Toast.makeText(MainActivity. this , text, 0 ).show(); } }); return imageview; } //比較View和Object是否是同一個實例 //arg0 就是頁面 //arg1是instantiateItem返回的結果 @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } //釋放資源 // container就是Viewpager // position 要釋放的位置 // object要釋放的頁面 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/qiaoyihebg/article/details/80403365