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);
}
}
<?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);
}
}
相关文章推荐
- SVM多类划分问题 one vs rest
- 课程练习一Problem M
- 多态之实现模拟虚表
- 获取SD卡中的音乐文件
- 各种正则表达式验证
- ajax
- Dota2APP--第二天
- HDU-1312-Red and Black
- HDU-1241-Oil Deposits
- VS2015 + opencv3.1 环境配置记录
- Bluetooth4.3 读取特征字值的问题
- iOS didReceiveMemoryWarining
- HTML5中div section article的区别
- When Should You Override viewDidLayoutSubviews?
- hdu oj题分类
- Codeforces Round #346 (Div. 2)E. New Reform 乱搞dfs
- WebView
- 240. Search a 2D Matrix II
- js正则函数match、exec、test、search、replace、split使用介绍集合
- 设计模式介绍