网络图片Viewpager轮播图的实现

来源:互联网 发布:linux ping命令次数 编辑:程序博客网 时间:2024/06/15 12:11


由于是网络请求,所以利用Xutils的httputils的网络请求

添加进xutils的jar宝和Gson包

先写xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <LinearLayout        android:id="@+id/dots"        android:layout_width="match_parent"        android:layout_height="10dp"        android:layout_alignBottom="@id/viewpager"        android:gravity="center"<pre name="code" class="html"><span style="white-space: pre;"></span>android:orientation="horizontal" >
</LinearLayout></RelativeLayout>


之后进行画小点的颜色,在res中新建drawable文件  其中选择shape的xml,画出点的两个形态

选中形态dots_facuse.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle" >    <solid android:color="#88000000" />    <corners android:radius="8dp" /></shape>

未选中形态dots_normal.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle" >    <solid android:color="#ff0000" />    <corners android:radius="8dp" /></shape>





这里的数据利用了网络的图片链接 所以写了个bean

package com.lqy.text;import java.io.Serializable;import java.sql.Savepoint;import java.util.ArrayList;public class bean implements Serializable {private Mydata data;public bean() {super();// TODO Auto-generated constructor stub}public bean(Mydata data) {super();this.data = data;}@Overridepublic String toString() {return "bean [data=" + data + "]";}public Mydata getData() {return data;}public void setData(Mydata data) {this.data = data;}public class Mydata implements Serializable {private ArrayList<AD1> ad1;public Mydata() {super();// TODO Auto-generated constructor stub}public Mydata(ArrayList<AD1> ad1) {super();this.ad1 = ad1;}@Overridepublic String toString() {return "Mydata [ad1=" + ad1 + "]";}public ArrayList<AD1> getAd1() {return ad1;}public void setAd1(ArrayList<AD1> ad1) {this.ad1 = ad1;}}public class AD1 implements Serializable {private String image;public AD1() {super();// TODO Auto-generated constructor stub}public AD1(String image) {super();this.image = image;}@Overridepublic String toString() {return "AD1 [image=" + image + "]";}public String getImage() {return image;}public void setImage(String image) {this.image = image;}}}

之后 便是主axctivity

package com.lqy.text;import java.util.ArrayList;import com.google.gson.Gson;import com.lidroid.xutils.BitmapUtils;import com.lidroid.xutils.HttpUtils;import com.lidroid.xutils.exception.HttpException;import com.lidroid.xutils.http.ResponseInfo;import com.lidroid.xutils.http.callback.RequestCallBack;import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;import com.lqy.text.bean.AD1;import com.nostra13.universalimageloader.core.ImageLoader;import android.R.drawable;import android.app.Activity;import android.content.Context;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.Handler;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.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.Toast;public class MainActivity extends Activity {protected static final String TAG = "off";// 从网络请求的轮播图图片路径private String url = "http://m.yunifang.com/yunifang/mobile/home?random=59053&encode=50f40a0c6ea9f7ce18fc7a2fc3d0742f";private bean json;ArrayList<AD1> adlist = new ArrayList<bean.AD1>();private ViewPager viewpager;private LinearLayout dots;private ArrayList<ImageView> dotslist;Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {if (msg.what == 1) {int currentItem = viewpager.getCurrentItem();currentItem++;viewpager.setCurrentItem(currentItem);Log.i(TAG, ".............");startRool();}};};@SuppressWarnings("deprecation")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewpager = (ViewPager) findViewById(R.id.viewpager);dots = (LinearLayout) findViewById(R.id.dots);// 初始化小点http();// 利用xutils.jar包进行解析viewpager.setCurrentItem(adlist.size() * 1000);// viewpager的滑动viewpagerscroview();}@SuppressWarnings("deprecation")private void viewpagerscroview() {viewpager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stubfor (int i = 0; i < dotslist.size(); i++) {if (i == arg0 % dotslist.size()) {dotslist.get(i).setImageDrawable(getResources().getDrawable(R.drawable.dots_facuse));} else {dotslist.get(i).setImageDrawable(getResources().getDrawable(R.drawable.dots_normal));}}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});startRool();}private void http() {HttpUtils http = new HttpUtils();http.send(HttpMethod.GET, url, new RequestCallBack<String>() {@Overridepublic void onFailure(HttpException arg0, String arg1) {// TODO Auto-generated method stub}@SuppressWarnings("deprecation")@Overridepublic void onSuccess(ResponseInfo<String> arg0) {// TODO Auto-generated method stub// 得到的字符串String info = arg0.result;System.out.println(info + "=====================");Gson gson = new Gson();json = gson.fromJson(info, bean.class);adlist.addAll(json.getData().getAd1());viewpager.setAdapter(new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Integer.MAX_VALUE;}@Overridepublic void destroyItem(ViewGroup container, int position,Object object) {// TODO Auto-generated method stub// super.destroyItem(container, position, object);container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container,int position) {// TODO Auto-generated method stubImageView image = new ImageView(MainActivity.this);BitmapUtils map = new BitmapUtils(MainActivity.this);map.display(image, adlist.get(position % adlist.size()).getImage());image.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubswitch (event.getAction()) {case MotionEvent.ACTION_DOWN:handler.removeCallbacksAndMessages(null);break;case MotionEvent.ACTION_UP:handler.sendEmptyMessageDelayed(1, 2000);break;case MotionEvent.ACTION_CANCEL:handler.sendEmptyMessageDelayed(1, 2000);break;default:break;}return true;}});container.addView(image);return image;}});initdots();}});}private void startRool() {// 开始轮播handler.sendEmptyMessageDelayed(1, 2000);}// 小点的实现private void initdots() {dotslist = new ArrayList<ImageView>();dotslist.clear();// 移除小点dots.removeAllViews();for (int i = 0; i < adlist.size(); i++) {ImageView image = new ImageView(MainActivity.this);// 小点初始化Drawable drawable = null;if (i == 0) {// 亮色图片哦、drawable = getResources().getDrawable(R.drawable.dots_facuse);} else {drawable = getResources().getDrawable(R.drawable.dots_normal);}// 添加进图片小点image.setImageDrawable(drawable);// 考虑到屏幕适配LayoutParams params = new LayoutParams(dip2px(this, 10), dip2px(this, 10));params.setMargins(dip2px(this, 5), 0, dip2px(this, 5), 0);dots.addView(image, params);// 将小点的空间添加到集合中dotslist.add(image);}}/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */public int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}@Overrideprotected void onDestroy() {// 移除所有的handler信息handler.removeCallbacksAndMessages(null);super.onDestroy();}}



该来的总会来   你早晚得开始  何不早点呐


1 0
原创粉丝点击