package com.weikou.wpc.superad.banner;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.os.Build;
|
import android.support.v4.view.PagerAdapter;
|
import android.telephony.TelephonyManager;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.WindowManager;
|
import android.widget.FrameLayout;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.loopj.android.http.JsonHttpResponseHandler;
|
import com.weikou.myselfsuperad.R;
|
import com.weikou.wpc.superad.api.BannerAPI;
|
import com.weikou.wpc.superad.api.BasicTextHttpResponseHandler;
|
import com.weikou.wpc.superad.banner.adapter.BannerAdapter;
|
import com.weikou.wpc.superad.banner.entity.BannerContent;
|
import com.weikou.wpc.superad.util.PxUtils;
|
import com.weikou.wpc.superad.widget.MyViewPager;
|
|
public class Superbanner {
|
private MyViewPager viewPager;
|
|
private BannerAdapter adapter;
|
|
private Activity activity;
|
|
private List<BannerContent> list;
|
|
public static String bannerid;
|
|
private static Superbanner superbanner;
|
|
private boolean delete = true;
|
|
private long switchTime = 5 * 1000;
|
private View view;
|
View cView;
|
private int mHeight = 0;// bannner楂樺害
|
|
public Superbanner(Activity context, String bannerId, View mView, int height) {
|
bannerid = bannerId;
|
activity = context;
|
this.mHeight = height;
|
view = mView;
|
list = new ArrayList<BannerContent>();
|
cView = LayoutInflater.from(context)
|
.inflate(R.layout.banner_show, null);
|
((ViewGroup) mView).addView(cView);
|
if (height > 0) {
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT, height);
|
cView.setLayoutParams(params);
|
} else {
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT, PxUtils.dpToPx(60,
|
activity));
|
cView.setLayoutParams(params);
|
|
}
|
viewPager = (MyViewPager) view.findViewById(R.id.vp_banner);
|
viewPager.removeCallbacks(mAutoScroller);
|
getAdList();
|
}
|
|
public static void initBanner(Activity context, String bannerId,
|
View mView, int bsannerHeight) {
|
superbanner = new Superbanner(context, bannerId, mView, bsannerHeight);
|
}
|
|
/**
|
* 锟斤拷取banner锟叫憋拷
|
*/
|
private void getAdList() {
|
TelephonyManager telephonyManager = (TelephonyManager) activity
|
.getSystemService(Activity.TELEPHONY_SERVICE);
|
String device = telephonyManager.getDeviceId();
|
Build bd = new Build();
|
String devicename = bd.MODEL;
|
|
WindowManager wm = (WindowManager) activity
|
.getSystemService(Context.WINDOW_SERVICE);
|
|
int width = wm.getDefaultDisplay().getWidth();
|
int height = wm.getDefaultDisplay().getHeight();
|
|
BannerAPI.getBannerInfo(activity, device, "android", devicename, width
|
+ "", height + "", "", bannerid,
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (Integer.parseInt(jsonObject.getString("code")) == 0) {
|
Gson gson = new GsonBuilder().setPrettyPrinting()
|
// .setFieldNamingPolicy(
|
// FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<BannerContent> iList = gson.fromJson(
|
jsonObject.getJSONObject("data")
|
.getJSONArray("adlist").toString(),
|
new TypeToken<List<BannerContent>>() {
|
}.getType());
|
if (iList.size() == 0) {
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT,
|
0);
|
cView.setLayoutParams(params);
|
}
|
if (list.size() > 0) {
|
list.clear();
|
}
|
list.addAll(iList);
|
delete = Boolean.parseBoolean(jsonObject
|
.getJSONObject("data").optString("delete"));
|
if (iList != null && iList.size() > 0) {
|
|
adapter = new BannerAdapter(list, activity,
|
delete, mHeight);
|
viewPager.setAdapter(adapter);
|
}
|
switchTime = Long.parseLong(jsonObject
|
.getJSONObject("data").optString(
|
"switchtime")) * 1000;
|
viewPager.setCurrentItem(0, true);
|
viewPager.postDelayed(mAutoScroller, 1000);
|
} else {
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT, 0);
|
cView.setLayoutParams(params);
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString,
|
throwable);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT, 0);
|
cView.setLayoutParams(params);
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
}
|
});
|
|
}
|
|
private int page = 1;
|
/**
|
* banner轮播时间控制
|
*/
|
private Runnable mAutoScroller = new Runnable() {
|
|
@Override
|
public void run() {
|
PagerAdapter adapter = viewPager.getAdapter();
|
if (adapter != null && adapter.getCount() != 0) {
|
viewPager.setCurrentItem((viewPager.getCurrentItem() + 1)
|
% adapter.getCount(), true);
|
if (page <= adapter.getCount()) {
|
if (page == 1) {
|
updateInfo("2", list.get(0));
|
} else if (page == 2) {
|
updateInfo("2", list.get(1));
|
} else if (page == 3) {
|
updateInfo("2", list.get(2));
|
}
|
}
|
}
|
viewPager.postDelayed(this, switchTime);
|
}
|
};
|
|
/**
|
* 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
|
*/
|
private void updateInfo(String type, BannerContent info) {
|
page++;
|
BannerAPI.updateInfo(activity, type, info.getId(),
|
Superbanner.bannerid, new JsonHttpResponseHandler());
|
}
|
}
|