动态加载ViewPager(服务器有几张显示几页+定时)

来源:互联网 发布:远程控制电视软件 编辑:程序博客网 时间:2024/06/03 16:45
package com.bjypt.vipcard.activity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Handler;import android.os.Parcelable;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.View.OnClickListener;import android.widget.ImageView;import android.widget.ImageView.ScaleType;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;import com.bjypt.vipcard.BaseActivity;import com.bjypt.vipcard.R;import com.bjypt.vipcard.net.HttpRequest;import com.bjypt.vipcard.net.Log;import com.bjypt.vipcard.net.mAjaxCallBack;import com.bjypt.vipcard.utils.ImageUtils;import com.bjypt.vipcard.utils.ToastUtils;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.assist.ImageScaleType;public class WelcomeActivity extends BaseActivity implements OnClickListener{private ViewPager viewPager; // android-support-v4中的滑动组件private List<ImageView> imageViews; // 滑动的图片集合private List<View> dots; // 图片标题正文的那些点private int currentItem = 0; // 当前图片的索引号private ImageView dot;//  圆圈图标private LinearLayout ll;//动态添加圆圈的LinearLayoutprivate ArrayList<String>imageUrl;//图片地址集合private ImageLoader imageLoader;private DisplayImageOptions options;private TextView tv_toMain;//顶部的跳过按钮@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_welcome);tv_toMain = (TextView) findViewById(R.id.tv_toMain);tv_toMain.setOnClickListener(this);ll = (LinearLayout) findViewById(R.id.ll);imageUrl =new ArrayList<String>();imageViews = new ArrayList<ImageView>();dots = new ArrayList<View>();imageLoader = ImageLoader.getInstance();options = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisc(true).showStubImage(R.drawable.welcome)// 设置图片下载期间显示的图片.showImageForEmptyUri(R.drawable.welcome)// 设置图片uri为空时显示的图片.showImageOnFail(R.drawable.welcome)// 设置图片加载或解码转换失败时显示的图片.considerExifParams(true).bitmapConfig(Bitmap.Config.RGB_565).imageScaleType(ImageScaleType.EXACTLY).build();if (!imageLoader.isInited()) {ImageUtils.initImageLoader(this);}viewPager = (ViewPager) findViewById(R.id.vp);}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();get();}private void getFail(){imageUrl.add("");ImageView imageView = new ImageView(this);imageView.setScaleType(ScaleType.CENTER_CROP);imageView.setImageResource(R.drawable.welcome);//imageView.setBackgroundResource(R.drawable.welcome);imageViews.add(imageView);viewPager.setAdapter(new MyAdapter());// 设置填充ViewPager页面的适配器// 设置一个监听器,当ViewPager中的页面改变时调用viewPager.setOnPageChangeListener(new MyPageChangeListener());// 当Activity显示出来后,每两秒钟切换一次图片显示handler.postDelayed(run, 3000);}private void getImageUrl(){// 初始化图片资源for (int i = 0; i < imageUrl.size(); i++) {ImageView imageView = new ImageView(this);//imageView.setImageResource(imageResId[i]);imageView.setScaleType(ScaleType.CENTER_CROP);imageLoader.displayImage(HttpRequest.ImgURL+imageUrl.get(i), imageView,options);imageViews.add(imageView);dot = new ImageView(this,null,R.style.dot_style);dot.setScaleType(ScaleType.FIT_XY);LayoutParams lp = new LayoutParams(15,15);if(i == 0)dot.setBackgroundResource(R.drawable.dot_focused);elsedot.setBackgroundResource(R.drawable.dot_normal);lp.leftMargin = 3;lp.rightMargin = 3;dots.add(dot);ll.addView(dot, lp);}viewPager.setAdapter(new MyAdapter());// 设置填充ViewPager页面的适配器// 设置一个监听器,当ViewPager中的页面改变时调用viewPager.setOnPageChangeListener(new MyPageChangeListener());// 当Activity显示出来后,每3秒钟切换一次图片显示handler.postDelayed(run, 3000);}/** * 当ViewPager中页面的状态发生改变时调用 *  * @author Administrator *  */private class MyPageChangeListener implements OnPageChangeListener {private int oldPosition = 0;/** * This method will be invoked when a new page becomes selected. * position: Position index of the new selected page. */public void onPageSelected(int position) {currentItem = position;//tv_title.setText(titles[position]);dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);dots.get(position).setBackgroundResource(R.drawable.dot_focused);oldPosition = position;}public void onPageScrollStateChanged(int arg0) {}public void onPageScrolled(int arg0, float arg1, int arg2) {}}/** * 填充ViewPager页面的适配器 *  * @author Administrator *  */private class MyAdapter extends PagerAdapter {@Overridepublic int getCount() {return imageUrl.size();}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView((View) arg2);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic Object instantiateItem(View container, int position) {View view = imageViews.get(position);ViewPager viewPager = (ViewPager) container;viewPager.addView(view);return imageViews.get(position);}}public void onClick(View arg0) {// TODO Auto-generated method stubswitch(arg0.getId()){case R.id.tv_toMain:handler.removeCallbacks(run);//Toast.makeText(WelcomeActivity.this, "按钮", Toast.LENGTH_SHORT).show();startActivity(new Intent(this, MainActivity.class));finish();break;}}private void get() {/** * 请求网络 */HashMap<String, Object> map = new HashMap<String, Object>();map = HttpRequest.GetsysAdList();HttpPost(map, true,new mAjaxCallBack<Object>() {@Overridepublic void onLoading(long count, long current) {super.onLoading(count, current);}@Overridepublic void onSuccess(Object t) {super.onSuccess(t);Log.e("成功", t.toString());try {JSONObject obj = new JSONObject(t.toString());if("0".equals(obj.get("resultStatus"))){JSONArray jsonArray = obj.getJSONArray("result");for(int i = 0;i<jsonArray.length();i++){JSONObject  json = jsonArray.getJSONObject(i);imageUrl.add(json.getString("adurl"));}if(imageUrl.size()>0){getImageUrl();}else{getFail();}}else{Hint(obj.getString("msg")+"");getFail();}} catch (JSONException e) {Hint(e.toString());getFail();}}@Overridepublic void onFailure(Throwable t, int errorNo, String strMsg) {super.onFailure(t, errorNo, strMsg);Hint(t.toString());getFail();}});}private void Hint(String message){ToastUtils.toast(this, message);}// 切换当前显示的图片private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {if(currentItem < imageViews.size()-1){currentItem = currentItem+1;viewPager.setCurrentItem(currentItem);// 切换当前显示的图片handler.postDelayed(run, 3000);}else{handler.removeCallbacks(run);WelcomeActivity.this.startActivity(new Intent(WelcomeActivity.this, MainActivity.class));WelcomeActivity.this.finish();}};};public Runnable run = new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubhandler.obtainMessage().sendToTarget(); // 通过Handler切换图片}};}
xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/rr"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="#FFFFFF"    android:orientation="vertical" >       <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="fill_parent"        android:layout_height="fill_parent" />    <TextView        android:id="@+id/tv_toMain"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:layout_alignParentTop="true"        android:layout_marginLeft="10dp"        android:layout_marginTop="10dp"        android:text="跳过"        android:textColor="#000000"        android:textSize="18sp" />    <LinearLayout        android:id="@+id/ll"        android:layout_width="fill_parent"        android:layout_height="50dp"        android:layout_alignParentBottom="true"        android:gravity="center"        android:orientation="horizontal" /></RelativeLayout>
<pre name="code" class="java">dot_style.xml
<style name="dot_style">        <item name="android:layout_width">5dp</item>        <item name="android:layout_height">5dp</item>        <item name="android:background">@drawable/dot_normal</item>        <item name="android:layout_marginLeft">3dp</item>        <item name="android:layout_marginRight">3dp</item>    </style>
R.drawable.dot_focused
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >
     <!-- 获取焦点的shape图形 -->    <corners android:radius="5dip" />    <solid android:color="#aaFFFFFF" /></shape>
<pre name="code" class="java">R.drawable.dot_normal

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"        android:shape="oval">    <!-- 正常的shape图形 -->     <corners android:radius="5dip" />     <solid android:color="#55000000" /></shape>

0 0
原创粉丝点击