登录 立即注册
安币:
楼主: Wsdtg
打印 上一主题 下一主题

重庆时时彩反倍投技巧| Android巧用ViewPager实现左右循环滑动图片,android 仿viewpager

[复制链接]

322

主题

322

帖子

1671

安币

手工艺人

跳转到指定楼层
楼主
发表于 2018-1-9 12:26:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文来源:http://www.oneupabq.com/a/www.gq.com.cn/

重庆时时彩独胆倍投 www.oneupabq.com,冬枣,甜脆适合鲜食,在冬春上市,产于河北黄骅。我国历代药典对葡萄的、清血等作用和对胃弱、痛风等病的功效均有论述。


        viewpager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图:

        

        1、首先看一些layout下的xml

[Java] 查看源文件 复制代码
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:orientation="vertical" > 
   
  <android.support.v4.view.viewpager  
    android:id="@+id/viewpager"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content" />  
     
  <relativelayout  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:orientation="vertical" >  
  
    <linearlayout  
      android:id="@+id/viewgroup"  
      android:layout_width="fill_parent"  
      android:layout_height="wrap_content"  
      android:layout_alignparentbottom="true"  
      android:layout_marginbottom="30dp"  
      android:gravity="center_horizontal"  
      android:orientation="horizontal" >  
    </linearlayout>  
  </relativelayout>  
 
</framelayout> 

        使用viewpager首先需要引入android-support-v4.jar这个jar包,自己不要忘记加

[Java] 查看源文件 复制代码
package com.example.viewpagerdemo; 
 
import android.app.activity; 
import android.os.bundle; 
import android.support.v4.view.pageradapter; 
import android.support.v4.view.viewpager; 
import android.support.v4.view.viewpager.onpagechangelistener; 
import android.view.view; 
import android.view.viewgroup; 
import android.view.viewgroup.layoutparams; 
import android.widget.imageview; 
import android.widget.linearlayout; 
 
public class twoactivity extends activity implements onpagechangelistener{ 
  /** 
   * viewpager 
   */ 
  private viewpager viewpager; 
   
  /** 
   * 装点点的imageview数组 
   */ 
  private imageview[] tips; 
   
  /** 
   * 装imageview数组 
   */ 
  private imageview[] mimageviews; 
   
  /** 
   * 图片资源id 
   */ 
  private int[] imgidarray ; 
 
  @override 
  protected void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.activity_main); 
    viewgroup group = (viewgroup)findviewbyid(r.id.viewgroup); 
    viewpager = (viewpager) findviewbyid(r.id.viewpager); 
     
    //载入图片资源id 
    imgidarray = new int[]{r.drawable.item01, r.drawable.item02, r.drawable.item03, r.drawable.item04, 
        r.drawable.item05,r.drawable.item06, r.drawable.item07, r.drawable.item08}; 
     
     
    //将点点加入到viewgroup中 
    tips = new imageview[imgidarray.length]; 
    for(int i=0; i<tips.length; i++){ 
      imageview imageview = new imageview(this); 
      imageview.setlayoutparams(new layoutparams(10,10)); 
      tips[i] = imageview; 
      if(i == 0){ 
        tips[i].setbackgroundresource(r.drawable.page_indicator_focused); 
      }else{ 
        tips[i].setbackgroundresource(r.drawable.page_indicator_unfocused); 
      } 
       
      linearlayout.layoutparams layoutparams = new linearlayout.layoutparams(new viewgroup.layoutparams(layoutparams.wrap_content,  
          layoutparams.wrap_content)); 
      layoutparams.leftmargin = 5; 
      layoutparams.rightmargin = 5; 
      group.addview(imageview, layoutparams); 
    } 
     
     
    //将图片装载到数组中 
    mimageviews = new imageview[imgidarray.length]; 
    for(int i=0; i<mimageviews.length; i++){ 
      imageview imageview = new imageview(this); 
      mimageviews[i] = imageview; 
      imageview.setbackgroundresource(imgidarray[i]); 
    } 
     
    //设置adapter 
    viewpager.setadapter(new myadapter()); 
    //设置监听,主要是设置点点的背景 
    viewpager.setonpagechangelistener(this); 
    //设置viewpager的默认项, 设置为长度的100倍,这样子开始就能往左滑动 
    viewpager.setcurrentitem((mimageviews.length) * 100); 
     
  } 
   
  /** 
   * 
   * @author xiaanming 
   * 
   */ 
  public class myadapter 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(view container, int position, object object) { 
      ((viewpager)container).removeview(mimageviews[position % mimageviews.length]); 
       
    } 
 
    /** 
     * 载入图片进去,用当前的position 除以 图片数组长度取余数是关键 
     */ 
    @override 
    public object instantiateitem(view container, int position) { 
      ((viewpager)container).addview(mimageviews[position % mimageviews.length], 0); 
      return mimageviews[position % mimageviews.length]; 
    } 
     
     
     
  } 
 
  @override 
  public void onpagescrollstatechanged(int arg0) { 
     
  } 
 
  @override 
  public void onpagescrolled(int arg0, float arg1, int arg2) { 
     
  } 
 
  @override 
  public void onpageselected(int arg0) { 
    setimagebackground(arg0 % mimageviews.length); 
  } 
   
  /** 
   * 设置选中的tip的背景 
   * @param selectitems 
   */ 
  private void setimagebackground(int selectitems){ 
    for(int i=0; i<tips.length; i++){ 
      if(i == selectitems){ 
        tips[i].setbackgroundresource(r.drawable.page_indicator_focused); 
      }else{ 
        tips[i].setbackgroundresource(r.drawable.page_indicator_unfocused); 
      } 
    } 
  } 
 
} 

        源码下载:左右滑动viewpager

        2、上面的代码中,当只有3张图片或者2张图片的时候,滑动存在bug问题的修改如下
destroyitem(view container, int position, object object)方法中不removeview

[Java] 查看源文件 复制代码
 @override 
    public void destroyitem(view container, int position, object object) { 
//     ((viewpager)container).removeview(mimageviews[position % mimageviews.length]); 
    } 
instantiateitem(view container, int position)增加异常扑捉



[Java] 查看源文件 复制代码
@override 
  public object instantiateitem(view container, int position) { 
    try {  
      ((viewpager)container).addview(mimageviews[position % mimageviews.length], 0); 
    }catch(exception e){ 
      //handler something 
    } 
    return mimageviews[position % mimageviews.length]; 
  } 


分享到:  QQ好友和群 QQ空间 微信
收藏收藏 支持支持 反对反对

2

主题

8734

帖子

-2576

安币

限制会员

沙发
发表于 2018-1-10 04:41:36 | 只看该作者
安卓巴士是个不错的网站,我来顶个贴~

1

主题

8679

帖子

-2654

安币

限制会员

板凳
发表于 2018-1-10 20:44:48 | 只看该作者
感谢分享,安卓巴士有你更精彩:lol

9

主题

8749

帖子

-1916

安币

限制会员

QQ达人

地板
发表于 7 天前 | 只看该作者
感谢大神~

27

主题

8984

帖子

-1640

安币

限制会员

5#
发表于 5 天前 | 只看该作者
感谢大神~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

重庆时时彩独胆倍投广告投放| 申请友链|手机版|站点统计|重庆时时彩独胆倍投 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
广东快乐10分 宁夏11选5下载 时时乐 开奖结果彩票控 快乐12走势图 时时彩技巧
云南快乐十分软件 江苏十一选五怎样选号 腾讯分分彩现场 聚众赌博罪 贵州11选5计划