天天看點

ViewPager廣告中的圖檔請求自網絡,監聽跳轉至點選圖檔對應Url的webView

這是一個顯示廣告的工具類,解決了内部圖檔的監聽

package com.example.byzx.llxzz.utils;

import java.lang.ref.WeakReference;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.os.AsyncTask;

import android.os.Message;

import android.support.v4.view.ViewPager;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageView;

import com.example.byzx.llxzz.adapter.ImageAdapter;

import com.example.byzx.llxzz.adapter.ViewHandler;

import com.example.byzx.llxzz.recommend.snscity.ChildModule.Data.InnerData;

import com.example.byzx.llxzz.ui.IndexForeignBuyView;

import com.example.byzx.llxzz.web.TodayListViewWeb;

public class BroadCastShowUtils {

private ViewPager viewPager;

private ViewHandler<Activity> handler;

private ImageAdapter<ImageView> imageAdapter;

private List<InnerData> broadList = new ArrayList<InnerData>();// Data集合0代表公告

private List<String> urls= new ArrayList<String>();

private ArrayList<View> views = new ArrayList<View>();

private Activity mActivity;

private IndexForeignBuyView view;

public BroadCastShowUtils(ViewPager viewPager, List<InnerData> broadList,

Activity activity) {

super();

this.viewPager = viewPager;

this.broadList = broadList;

this.mActivity = activity;

}

public void initBroad() {

// 第一步操作

handler = new ViewHandler<Activity>(new WeakReference<Activity>(

mActivity), viewPager);

imageAdapter = new ImageAdapter<ImageView>();// 加載廣告的擴充卡

viewPager.setAdapter(imageAdapter);// 廣告

new AsyncTask<Void, Void, ArrayList<View>>() {

String imgUrl;

@Override

protected ArrayList<View> doInBackground(Void... params) {

views.clear();

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

view = new IndexForeignBuyView(mActivity, broadList.get(i)

.getMediaUrl());

imgUrl = broadList.get(i).getUrl();//獲得與其下标對應的Url

urls.add(imgUrl);//webView的url

views.add(view.v);// 廣告的圖檔,v為View類型

view.v.setOnClickListener(new OnClickListener() {

//給廣告中的圖檔添加點選事件,通過點選的v獲得它在views中的下标,得知與其對應的urls集合中的Url并跳轉

@Override

public void onClick(View v) {

String url =urls.get(views.indexOf(v));

Intent intent = new Intent(mActivity,

TodayListViewWeb.class);

intent.putExtra("html", url);

mActivity.startActivity(intent);

}

});

}

return views;

}

@Override

protected void onPostExecute(ArrayList<View> result) {

if (result != null) {

imageAdapter.setViewlist(result);

imageAdapter.notifyDataSetChanged();

}

};

}.execute();

// 第二步操作

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

// 配合 Adapter 的 currentItem 字段進行設定。

@Override

public void onPageSelected(int arg0) {

handler.sendMessage(Message.obtain(handler,

ViewHandler.MSG_PAGE_CHANGED, arg0, 0));

}

@Override

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

}

// 覆寫該方法實作輪播效果的暫停和恢複

@Override

public void onPageScrollStateChanged(int arg0) {

switch (arg0) {

case ViewPager.SCROLL_STATE_DRAGGING:// 拖動,滑動

handler.sendEmptyMessage(ViewHandler.MSG_KEEP_SILENT);

break;

case ViewPager.SCROLL_STATE_IDLE:// 空閑,閑置,未做任何操作

handler.sendEmptyMessageDelayed(

ViewHandler.MSG_UPDATE_IMAGE, 2000);// 2秒後滑動

break;

default:

break;

}

}

});

// 手動切換索引

viewPager.setCurrentItem(Integer.MAX_VALUE / 2);// 預設在中間,使使用者看不到邊界

}

}