一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 波多 在线播放 | 国产一区私人高清影院 | 范冰冰上面好大下面好紧 | 媳妇和公公小说 | 国产黄色大片网站 | 黄a在线观看 | 好湿好紧太硬了我好爽 | 成人免费高清视频 | 1024国产基地永久免费 | 法国女佣系列在线播放 | 欧美一级二级片 | 亚洲欧美另类专区 | 精品一区二区三区视频 | chinese东北痞子gay | 亚洲第一区欧美日韩精品 | 美女的隐私脱裤子无遮挡 | 变形金刚第一部 | 国产精品永久免费视频观看 | 黑人巨茎大战欧美白妇 | 国产精品调教 | 欧美怡红院视频一区二区三区 | 欧美成人香蕉在线观看 | 秀婷程仪公欲息肉婷在线观看 | 天天做天天爱天天综合网 | 贰佰麻豆剧果冻传媒一二三区 | 亚州日韩精品AV片无码中文 | 欧美理论片手机在线观看片免费 | 天天做天天爽 | 日本欧美不卡一区二区三区在线 | 8天堂资源在线官网 | 欧美综合另类 | 精品四虎国产在免费观看 | 午夜亚洲视频 | 99久久免费国内精品 | 欧美日韩国产亚洲人成 | 无限在线观看视频大全免费高清 | 91精品国产免费久久国语蜜臀 | 天天狠天天透天干天天怕处 | 亚州精品视频 | 九九精品免视频国产成人 | 91大片淫黄大片在线天堂 |