首页 > 系统 > Android > 正文

Android Viewpager实现轮播广告图

2019-10-22 18:10:47
字体:
来源:转载
供稿:网友

本文实例为大家分享了Android Viewpager轮播广告图的具体代码,供大家参考,具体内容如下

<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>

主代码写

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);    }  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表