激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android Viewpager實現輪播廣告圖

Android Viewpager實現輪播廣告圖

2022-02-23 15:17qiaoyihebg Android

這篇文章主要為大家詳細介紹了Android Viewpager實現輪播廣告圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久.com | pornoⅹxxxxhd麻豆 | 全黄裸片武则天艳史 | 黄色网址免费进入 | 国产剧情在线观看一区二区 | 精品一区二区三区免费毛片爱 | 精品国产高清一区二区三区 | 成人精品aaaa网站 | 成人啪啪18免费网站 | 91美女视频在线观看 | 久久艹一区 | 91久久国产综合久久91猫猫 | 国产一区二区视频精品 | 在线成人精品视频 | 色妞色视频一区二区三区四区 | 中文字幕1区2区 | 看毛片电影 | 成人mm视频在线观看 | 粉嫩蜜桃麻豆免费大片 | 国产精品自拍啪啪 | 久久午夜神器 | 国产麻豆久久 | 免费的性爱视频 | 一区二区三区日本在线观看 | av日韩一区二区三区 | 久久久国产精品视频 | 国产一级毛片不卡 | 日韩精品久久久久久 | 免费国产在线精品 | 国产成人强伦免费视频网站 | 一区免费| 中文字幕精品一二三四五六七八 | 色污视频 | 日本在线播放一区二区三区 | 国产精品啪一品二区三区粉嫩 | 亚洲成人免费影视 | 久久国产精品久久久久久久久久 | 久久亚洲春色中文字幕久久 | 99精品国产小情侣高潮露脸在线 | 国产精品一区二区x88av | 最近日本电影hd免费观看 |