package com.metis.base.widget.adapter.holder;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
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.metis.base.R;
import com.metis.base.manager.CacheManager;
import com.metis.base.manager.DisplayManager;
import com.metis.base.module.User;
import com.metis.base.utils.FileUtils;
import com.metis.base.utils.Log;
import com.metis.base.widget.TitleBar;
import com.metis.base.widget.adapter.delegate.MeHeaderDelegate;
import com.nostra13.universalimageloader.core.download.ImageDownloader;
import java.io.File;
import android.support.v8.renderscript.*;
/**
* Created by Beak on 2015/8/24.
*/
public class MeHeaderHolder extends AbsViewHolder<MeHeaderDelegate> {
private static final String TAG = MeHeaderHolder.class.getSimpleName();
public ImageView meBg = null;
public TitleBar meTb = null;
public ImageView meProfileIv = null, meMoreIv = null;
public TextView meNameTv = null;
public TextView meFocusCountTv, meFollowCountTv, meChargeTv;
public MeHeaderHolder(View itemView) {
super(itemView);
meBg = (ImageView)itemView.findViewById(R.id.me_card_bg);
meTb = (TitleBar)itemView.findViewById(R.id.me_card_title_bar);
meProfileIv = (ImageView)itemView.findViewById(R.id.me_card_profile);
meMoreIv = (ImageView)itemView.findViewById(R.id.me_card_profile_more);
meNameTv = (TextView)itemView.findViewById(R.id.me_name);
meFocusCountTv = (TextView)itemView.findViewById(R.id.me_focus_count);
meFollowCountTv = (TextView)itemView.findViewById(R.id.me_follows_count);
meChargeTv = (TextView)itemView.findViewById(R.id.me_charge_count);
}
@Override
public void bindData(final Context context, MeHeaderDelegate meHeaderDelegate, RecyclerView.Adapter adapter, int position) {
User me = meHeaderDelegate.getSource();
if (me == null) {
return;
}
final String avatar = me.getAvailableAvatar();
Log.v(TAG, "avatar=" + avatar);
File tempFile = new File (CacheManager.getInstance(context).getMyImageCacheDir(), FileUtils.getNameFromUrl(avatar));
if (tempFile.exists()) {
manageProfile(context, tempFile);
} else {
HttpUtils httpUtils = new HttpUtils(10 * 1000);
httpUtils.download(avatar, tempFile.getAbsolutePath(), new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
File file = responseInfo.result;
manageProfile(context, file);
}
@Override
public void onFailure(HttpException e, String s) {
}
});
}
meNameTv.setText(me.name);
meFocusCountTv.setText(me.focusNum + "");
meFollowCountTv.setText(me.fansNum + "");
meChargeTv.setText(0 + "");
}
private void manageProfile (Context context, File file) {
if (file != null && file.exists()) {
Log.v(TAG, "cache dir=" + file.getAbsolutePath());
final int profileSize = context.getResources().getDimensionPixelSize(R.dimen.profile_size_big);
DisplayManager.getInstance(context).display(
ImageDownloader.Scheme.FILE.wrap(file.getAbsolutePath()),
meProfileIv,
DisplayManager.getInstance(context).makeRoundDisplayImageOptions(profileSize));
Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath());
Bitmap temp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
RenderScript rs = RenderScript.create(context);
Allocation input = Allocation.createFromBitmap(rs, bmp);
Allocation output = Allocation.createFromBitmap(rs, temp);
ScriptIntrinsicBlur scriptBlur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
scriptBlur.setInput(input);
scriptBlur.setRadius(10);
scriptBlur.forEach(output);
output.copyTo(temp);
rs.destroy();
meBg.setBackground(new BitmapDrawable(temp));
}
}
}