viewpager无限轮播
来源:互联网 发布:淘宝几马全球购 编辑:程序博客网 时间:2024/05/09 05:52
主activity代码
package com.example.viewpager;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.baway.GetList.GetList;
import com.baway.bean.Image;
import com.baway.http.GetJson;
import com.example.adapter.VpAdapter;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class MainActivity extends Activity {
private String url = "http://i.dxy.cn/snsapi/event/count/list/all";private ViewPager vp;ArrayList<ImageView> list;private ArrayList<Image> imagelist;Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { // 获取当前位置 vp.setCurrentItem(vp.getCurrentItem() + 1); // 设置页面跳转时间间隔 handler.sendEmptyMessageDelayed(0, 2000); };};private GetJson gj;private GetList gl;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 设置页面跳转时间间隔(首次运行) handler.sendEmptyMessageDelayed(0, 2000); gj = new GetJson(); gl = new GetList(); vp = (ViewPager) findViewById(R.id.vp); new Mythread().start();}private void getimage() { list = new ArrayList<ImageView>(); for (int i = 0; i < imagelist.size(); i++) { ImageView iv = new ImageView(getApplicationContext()); // 图像拉伸 iv.setScaleType(ScaleType.FIT_XY); // 配置imageloadler加载图片 ImageLoader loader = ImageLoader.getInstance(); loader.init(ImageLoaderConfiguration .createDefault(getApplicationContext())); loader.displayImage(imagelist.get(i).getPath(), iv); list.add(iv); //imageview监听 iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_DOWN){ //按下状态停止播放 handler.removeCallbacksAndMessages(null); }else if(event.getAction()==MotionEvent.ACTION_CANCEL){ //取消时,发送消息 handler.sendEmptyMessageDelayed(0, 2000); }else if(event.getAction()==MotionEvent.ACTION_UP){ //抬起时,发送消息 handler.sendEmptyMessageDelayed(0, 2000); } return true; } }); }}class Mythread extends Thread { private RadioGroup rg; @Override public void run() { // TODO Auto-generated method stub super.run(); String imagejson = gj.getjson(url); Log.d("-----------------------------", imagejson); imagelist = gl.getimagelist(imagejson); Log.d("-----------------------------", imagelist.size() + ""); runOnUiThread(new Runnable() { public void run() { //添加小圆点 setdian(); // 为imageview适配图片 getimage(); // adapter适配数据 vp.setAdapter(new VpAdapter(list)); //vp 滑动监听 vp.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { rg.check(arg0%imagelist.size()); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); } }); } protected void setdian() { //添加边距 int wrap = RadioGroup.LayoutParams.WRAP_CONTENT; RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(wrap, wrap); params.leftMargin = 5; rg = (RadioGroup) findViewById(R.id.rg); for (int i = 0; i < imagelist.size(); i++) { RadioButton rb = new RadioButton(getApplicationContext()); rb.setId(i); // 设置button属性 rb.setButtonDrawable(R.drawable.select_button); // 如果是第一个时,不需要加左边距 if (i != 0) { rg.addView(rb, params); } else rg.addView(rb); } rg.check(0); }}
}
适配器代码
package com.example.adapter;
import java.util.ArrayList;
import android.R.integer;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class VpAdapter extends PagerAdapter {
private ArrayList<ImageView> list;public VpAdapter(ArrayList<ImageView> list) { super(); this.list = list;}@Overridepublic int getCount() { // TODO Auto-generated method stub return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) { ImageView iv=list.get(position%list.size()); container.addView(iv); return iv;}
}
XML文件
button1
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <!-- 画圆点 --> <stroke android:width="1dp" android:color="#00f" /> <solid android:color="#0f0" /> <size android:height="10dp" android:width="10dp" /></shape>
bitton2
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <!-- 画圆点 --> <stroke android:width="1dp" android:color="#00f" /> <solid android:color="#fff" /> <size android:height="10dp" android:width="10dp" /></shape>
select文件
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button" android:state_checked="true"></item> <item android:drawable="@drawable/button1" android:state_checked="false"></item></selector>
- viewpager无限轮播
- Viewpager无限轮播
- Viewpager无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- VieWPager无限轮播
- viewpager无限轮播
- viewpager无限轮播
- viewpager无限轮播
- viewpager 无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- ViewPager 无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- viewpager 无限轮播
- ViewPager无限轮播
- vive 资料 kinect hololens realsense
- Android 指引蒙版的实现
- How To Install Nginx, MariaDB 10, PHP 7 (LEMP Stack) in 16.10/16.04
- AngularJS 模块
- 进程间传递文件描述符
- viewpager无限轮播
- awk 中的数字模式和字符模式
- dubbo-monitor-simple 安装
- handler的使用
- swift中的可选项详细剖析
- 根据生日计算星座(Objective-C)
- UIImage与CIImage的区别
- 分享Kali Linux 2016.2第43周虚拟机
- JAVA-String类