广告
返回顶部
首页 > 资讯 > 精选 >Android开发中使用ViewPager实现一个轮翻图效果
  • 676
分享到

Android开发中使用ViewPager实现一个轮翻图效果

androidviewpagerage 2023-05-31 13:05:27 676人浏览 八月长安
摘要

Android开发中使用ViewPager实现一个轮翻图效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体方法如下:import java.util.ArrayList

Android开发中使用ViewPager实现一个轮翻图效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

具体方法如下:

import java.util.ArrayList; import java.util.List;  import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView;  public class MainActivity extends Activity implements OnPageChangeListener {    protected static final String TAG = "MainActivity";  private List<ImageView> imageViewList;  private ViewPager mViewPager;  private final int[] imageResIDs = {    R.drawable.a,    R.drawable.b,    R.drawable.c,    R.drawable.d,    R.drawable.e  };  private final String[] imageDescriptions = {    "巩俐不低俗,我就不能低俗",    "扑树又回来啦!再唱经典老歌引万人大合唱",    "揭秘北京电影如何升级",    "乐视网TV版大派送",    "热血屌丝的反杀"  };  private TextView tvImageDescription; // 图片描述  private LinearLayout llPointGroup;  // 点控件的组  private int previousPosition = 0;  // viewpager选中的前一个position  private boolean isStop = false; // 控制循环的子线程是否停止    private Handler handler = new Handler(){    @Override   public void handleMessage(Message msg) {    super.handleMessage(msg);        mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);   }  };   @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);      initView();      new Thread(new Runnable() {     @Override    public void run() {     // 每两秒钟向主线程发送一条消息, 切换viewpager的界面     while(!isStop) {      SystemClock.sleep(2000);            handler.sendEmptyMessage(0);     }     Log.i(TAG, "循环线程停止了");    }}).start();  }    @Override  protected void onDestroy() {   isStop = true;   super.onDestroy();  }   private void initView() {   mViewPager = (ViewPager) findViewById(R.id.viewpager);   llPointGroup = (LinearLayout) findViewById(R.id.ll_point_group);   tvImageDescription = (TextView) findViewById(R.id.tv_image_description);      imageViewList = new ArrayList<ImageView>();      ImageView iv;   View pointView;   LayoutParams params;   for (int i = 0; i < imageResIDs.length; i++) {    iv = new ImageView(this);    iv.setBackgroundResource(imageResIDs[i]);    imageViewList.add(iv);        // 根据图片添加点    pointView = new View(this);    params = new LayoutParams(5, 5);    params.leftMargin = 5;    pointView.setLayoutParams(params);    pointView.setEnabled(false);    pointView.setBackgroundResource(R.drawable.point_bg);    llPointGroup.addView(pointView);   }      MyPagerAdapter mAdapter = new MyPagerAdapter();   mViewPager.setAdapter(mAdapter);   mViewPager.setOnPageChangeListener(this);      int item = (Integer.MAX_VALUE / 2) - ((Integer.MAX_VALUE / 2) % imageViewList.size());   mViewPager.setCurrentItem(item);  // 设置当前选中的item的position      tvImageDescription.setText(imageDescriptions[previousPosition]);   llPointGroup.getChildAt(previousPosition).setEnabled(true); // 第一点被选中  }      class MyPagerAdapter extends PagerAdapter {    @Override   public int getCount() {    return Integer.MAX_VALUE;   }       @Override   public boolean isViewFromObject(View arg0, Object arg1) {    return arg0 == arg1;   }       @Override   public void destroyItem(ViewGroup container, int position, Object object) {    // 移除掉指定position的对象    mViewPager.removeView(imageViewList.get(position % imageViewList.size()));   }       @Override   public Object instantiateItem(ViewGroup container, int position) {    // 添加指定position的对象    mViewPager.addView(imageViewList.get(position % imageViewList.size()));    return imageViewList.get(position % imageViewList.size());   }  }    @Override  public void onPageScrollStateChanged(int arg0) {   // TODO Auto-generated method stub     }   @Override  public void onPageScrolled(int arg0, float arg1, int arg2) {   // TODO Auto-generated method stub     }     @Override  public void onPageSelected(int position) {   tvImageDescription.setText(imageDescriptions[position % imageViewList.size()]);   llPointGroup.getChildAt(position % imageViewList.size()).setEnabled(true);   llPointGroup.getChildAt(previousPosition).setEnabled(false);      previousPosition = position % imageViewList.size();  } } 

--结束END--

本文标题: Android开发中使用ViewPager实现一个轮翻图效果

本文链接: https://www.lsjlt.com/news/226092.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作