package com.appassit.adapter;
import java.util.Calendar;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.appassit.R;
import com.appassit.activitys.SLAppication;
import com.appassit.common.BitmapHelp;
import com.appassit.model.BeautyInfo;
import com.appassit.tools.AndroidOSUtils;
import com.appassit.views.CustomImageView;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.bitmap.BitmapDisplayConfig;
import com.lidroid.xutils.bitmap.callback.BitmapLoadFrom;
import com.lidroid.xutils.bitmap.callback.DefaultBitmapLoadCallBack;
public class BeautyAdapter extends ViewAdapter<BeautyInfo> {
private static final String TAG = BeautyAdapter.class.getSimpleName();
private static final int ALBUM_PAST_WIDTH;
private static final int ALBUM_PAST_HEIGHT;
private static final int ALBUM_IMAGE_WIDTH;
private static final int ALBUM_IMAGE_HEIGHT;
private static BitmapUtils bitmapUtils;
static {
ALBUM_PAST_WIDTH = (AndroidOSUtils.getDisplayWidth() - 2 * (2 * AndroidOSUtils.getDimens(R.dimen.album_margin) + AndroidOSUtils
.getDimens(R.dimen.album_past_space))) / 3;
ALBUM_PAST_HEIGHT = ALBUM_PAST_WIDTH * 922 / 534;
ALBUM_IMAGE_WIDTH = AndroidOSUtils.getDisplayWidth() - 4 * AndroidOSUtils.getDimens(R.dimen.album_margin);
ALBUM_IMAGE_HEIGHT = ALBUM_IMAGE_WIDTH * 488 / 1000;
}
public BeautyAdapter(OnClickListener listener) {
super(listener);
bitmapUtils = BitmapHelp.getBitmapUtils(SLAppication.getContext());
bitmapUtils.configDefaultLoadingImage(R.drawable.wallpapermgr_thumb_default);
bitmapUtils.configDefaultLoadFailedImage(R.drawable.wallpapermgr_thumb_default);
bitmapUtils.configDefaultBitmapConfig(Bitmap.Config.ARGB_8888);
}
@Override
public BeautyInfo getItem(int position) {
return super.getItem(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(SLAppication.getContext()).inflate(R.layout.layout_album_view, null);
holder = new ViewHolder();
holder.init(convertView);
convertView.setTag(holder);
} else {
Object tag = (ViewHolder) convertView.getTag();
if (tag != null && tag instanceof ViewHolder) {
holder = (ViewHolder) tag;
} else {
holder = new ViewHolder();
holder.init(convertView);
convertView.setTag(holder);
}
}
BeautyInfo ri = getItem(position);
if (ri.flag == 1)
holder.setHeadData(ri);
else
holder.setItemData(ri);
return convertView;
}
class ViewHolder {
RelativeLayout mTitle;
TextView mDate, mMonth, mName;
LinearLayout mLink;
LinearLayout mPast;
CustomImageView[] mImages = new CustomImageView[3];
CustomImageView mImage;
void init(View parent) {
mTitle = (RelativeLayout) parent.findViewById(R.id.album_title);
mDate = (TextView) parent.findViewById(R.id.album_date);
mMonth = (TextView) parent.findViewById(R.id.album_month);
mName = (TextView) parent.findViewById(R.id.album_name);
mLink = (LinearLayout) parent.findViewById(R.id.album_link);
mPast = (LinearLayout) parent.findViewById(R.id.album_past);
mImage = (CustomImageView) parent.findViewById(R.id.album_image);
mImage.setImageSize(ALBUM_IMAGE_WIDTH, ALBUM_IMAGE_HEIGHT);
mImages[0] = (CustomImageView) parent.findViewById(R.id.album_image1);
mImages[1] = (CustomImageView) parent.findViewById(R.id.album_image2);
mImages[2] = (CustomImageView) parent.findViewById(R.id.album_image3);
for (CustomImageView image : mImages) {
image.setImageSize(ALBUM_PAST_WIDTH, ALBUM_PAST_HEIGHT);
}
}
void setHeadData(final BeautyInfo ri) {
mTitle.setVisibility(View.GONE);
mPast.setVisibility(View.GONE);
mImage.setVisibility(View.VISIBLE);
// bitmapUtils.configDefaultBitmapMaxSize(ALBUM_PAST_WIDTH, ALBUM_PAST_HEIGHT);
bitmapUtils.display(mImage, ri.url1, new CustomBitmapLoadCallBack());
// Picasso.with(SLAppication.getContext()).load(ri.url1).placeholder(R.drawable.album_images_default).resize(ALBUM_PAST_WIDTH,
// ALBUM_PAST_HEIGHT).centerCrop().into(mImage);
mImage.setTag(ri);
mImage.setOnClickListener(getOnClickListener());
}
void setItemData(BeautyInfo ri) {
mTitle.setVisibility(View.VISIBLE);
mPast.setVisibility(View.VISIBLE);
mImage.setImageDrawable(null);
mImage.setVisibility(View.GONE);
mLink.setTag(ri);
mLink.setOnClickListener(getOnClickListener());
setTextInfo(ri.recomTime, ri.girlName);
String urls[] = { ri.url1, ri.url2, ri.url3 };
for (int i = 0; i < mImages.length; i++) {
final CustomImageView image = mImages[i];
final String url = urls[i];
// /bitmapUtils.configDefaultBitmapMaxSize(ALBUM_IMAGE_WIDTH, ALBUM_IMAGE_HEIGHT);
bitmapUtils.display(image, url, new CustomBitmapLoadCallBack());
image.setTag(ri);
image.setOnClickListener(getOnClickListener());
}
}
private void setTextInfo(String recomTime, String girlName) {
mName.setText(girlName);
long time = Long.parseLong(recomTime);
// Logger.Error(TAG, time + "--->" + System.currentTimeMillis());
Calendar c = Calendar.getInstance();
c.setTimeInMillis(time * 1000);
int day = c.get(Calendar.DAY_OF_MONTH);
String sDate = day < 10 ? ("0" + day) : ("" + day);
mDate.setText(sDate);
int month = c.get(Calendar.MONTH);
String sMonth = month < 9 ? ("0" + (month + 1)) : ("" + (month + 1));
mMonth.setText("/" + sMonth + "月");
}
public class CustomBitmapLoadCallBack extends DefaultBitmapLoadCallBack<ImageView> {
public CustomBitmapLoadCallBack() {
}
@Override
public void onLoading(ImageView container, String uri, BitmapDisplayConfig config, long total, long current) {
}
@Override
public void onLoadCompleted(ImageView container, String uri, Bitmap bitmap, BitmapDisplayConfig config, BitmapLoadFrom from) {
// super.onLoadCompleted(container, uri, bitmap, config, from);
fadeInDisplay(container, bitmap);
}
}
}
private static final ColorDrawable TRANSPARENT_DRAWABLE = new ColorDrawable(android.R.color.transparent);
private void fadeInDisplay(ImageView imageView, Bitmap bitmap) {
final TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[] { TRANSPARENT_DRAWABLE,
new BitmapDrawable(imageView.getResources(), bitmap) });
imageView.setImageDrawable(transitionDrawable);
transitionDrawable.startTransition(500);
}
}