您的位置:首页 > 其它

ViewPager轮播下加小圆点

2016-04-01 12:22 260 查看
//画小圆点

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle" >

<corners android:radius="8dp"/>

<solid android:color="#99ffff"/>

</shape>

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle" >

<corners android:radius="8dp"/>

<solid android:color="#88000000"/>

</shape>

----------------------------------------------------------------------------------------------------------------------------------

public class MainActivity extends Activity

String[] imageUrls = new String[] {

"http://192.168.56.1:8080/d.jpg",

"http://192.168.56.1:8080/e.jpg",

"http://192.168.56.1:8080/f.jpg",

"http://192.168.56.1:8080/c.jpg" };

private ArrayList<ImageView> dotslist;

Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

if (msg.what == 0) {

// 先获取当前页码值

int currentItem = viewpager.getCurrentItem();

// 设置条目页码加加

currentItem++;

viewpager.setCurrentItem(currentItem);

// 再发送消息

move();

}

if(msg.what==1){

String str=(String) msg.obj;

Gson gson=new Gson();

Moves fromJson = gson.fromJson(str, Moves.class);

listView1.setAdapter(new MyAdapter(MainActivity.this,fromJson));

}

};

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView1=(ListView)findViewById(R.id.listView1);

linearlayout=(LinearLayout)findViewById(R.id.linearlayout);

viewpager=(ViewPager)findViewById(R.id.viewpager);

viewpager.setAdapter(new MyPagerAdapter(imageUrls, this, handler));

// 设置当前的页码

viewpager.setCurrentItem(10000000);

//初始化小点

initdots();

viewpager.setOnPageChangeListener(new OnPageChangeListener() {

public void onPageSelected(int arg0) {

for (int i = 0; i < dotslist.size(); i++) {

if(arg0%imageUrls.length==i){

dotslist.get(i).setImageDrawable(getResources().getDrawable(R.drawable.dots_focused));

}else{

dotslist.get(i).setImageDrawable(getResources().getDrawable(R.drawable.dots_normal));

}

}

}

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

public void onPageScrollStateChanged(int arg0) {

}

});

move();

getJson();

}

private void initdots() {

dotslist=new ArrayList<ImageView>();

linearlayout.removeAllViews();

dotslist.clear();

for (int i = 0; i < imageUrls.length; i++) {

ImageView imageView=new ImageView(MainActivity.this);

if(i==0){

//默认小点是亮的

imageView.setImageDrawable(getResources().getDrawable(R.drawable.dots_focused));

}else{

imageView.setImageDrawable(getResources().getDrawable(R.drawable.dots_normal));

}

LayoutParams params=new LayoutParams(20, 20);

//将image添加到线性布局中

params.setMargins(5, 0, 5, 0);

//设置小点的宽度

linearlayout.addView(imageView,params);

//将小点添加到集合中

dotslist.add(imageView);

}

}

public void move() {

handler.sendEmptyMessageDelayed(0, 2000);

}

private void getJson() {

new Thread(){

private InputStream content;

public void run() {

try {

HttpClient httpClient=new DefaultHttpClient();

HttpGet httpGet=new HttpGet("http://v.juhe.cn/weixin/query?key=0917c812f187b92e025c9b7c2d4e59b5&pno=2");

HttpResponse httpResponse = httpClient.execute(httpGet);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if(statusCode==200){

HttpEntity httpEntity = httpResponse.getEntity();

InputStream inputStream = httpEntity.getContent();

String streamToStr = streamToStr(inputStream);

Message msg = Message.obtain();

msg.obj=streamToStr;

msg.what=1;

handler.sendMessage(msg);

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

};

}.start();

}

public String streamToStr(InputStream input) {

ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();

try {

int len = 0;

byte[] buffer = new byte[1024];

while ((len = input.read(buffer)) != -1) {

arrayOutputStream.write(buffer, 0, len);

System.out.println("arrayOutputStream.toString()"+arrayOutputStream.toString());

}

} catch (IOException e) {

e.printStackTrace();

}

return arrayOutputStream.toString();

}

}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

public class MyPagerAdapter extends PagerAdapter {

protected static final String TAG = "MyPagerAdapter";

private String[] imageUrls;

private Context context;

private Handler handler;

public MyPagerAdapter(Context context, String[] imageUrls, Handler handler) {

this.context = context;

this.imageUrls = imageUrls;

this.handler = handler;

}

@Override

public int getCount() {

return Integer.MAX_VALUE;

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

ImageView imageView = new ImageView(context);

imageView.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

// 按下

case MotionEvent.ACTION_DOWN:

// 移除所有消息和任务

handler.removeCallbacksAndMessages(null);

Log.i(TAG, "down......");

break;

// 手指抬起

case MotionEvent.ACTION_UP:

handler.sendEmptyMessageDelayed(0, 2000);

Log.i(TAG, "up......");

break;

// 取消触摸事件

case MotionEvent.ACTION_CANCEL:

Log.i(TAG, "cancel......");

handler.sendEmptyMessageDelayed(0, 2000);

break;

default:

break;

}

// 是否消费该事件 事件的传递机制

return true;

}

});

BitmapUtils bitmapUtils = new BitmapUtils(context);

bitmapUtils.display(imageView, imageUrls[position % imageUrls.length]);

container.addView(imageView);

return imageView;

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

container.removeView((View) object);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: