package com.example.administrator.searchpicturetool.joy; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.example.administrator.searchpicturetool.R; import com.example.administrator.searchpicturetool.config.API; import com.example.administrator.searchpicturetool.model.SaveBitmapModel; import com.example.administrator.searchpicturetool.model.db.SqlModel; import com.example.administrator.searchpicturetool.model.bean.ImageJoy; import com.example.administrator.searchpicturetool.model.bean.NetImageImpl; import com.example.administrator.searchpicturetool.util.Utils; import com.facebook.common.executors.CallerThreadExecutor; import com.facebook.common.references.CloseableReference; import com.facebook.datasource.DataSource; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber; import com.facebook.imagepipeline.image.CloseableImage; import com.jude.easyrecyclerview.adapter.BaseViewHolder; import com.jude.utils.JUtils; import rx.functions.Action1; /** * Created by wenhuaijun on 2016/2/13 0013. */ public class JoyImageViewHolder extends BaseViewHolder<ImageJoy> implements View.OnClickListener{ float width; float height; float sccrenWidth; /** * -1 初始化 * 0 下载图片 * 1 分享图片 */ ViewGroup.LayoutParams layoutParams; private SimpleDraweeView simpleDraweeView; private TextView title; private ImageView share; private ImageView download; private ImageView collect; private ImageJoy data; private int state =-1; //保存图片后的观察者 Action1<String> saveSubscriber = new Action1<String>() { @Override public void call(String path) { if(!path.equals(API.status.error)){ if(state==0) { JUtils.Toast("图片已保存至:" + path); //保存到数据库 SqlModel.addDownloadImg(getContext(),new NetImageImpl(data.getSourceurl(),data.getThumburl(),Integer.parseInt(data.getWidth()),Integer.parseInt(data.getHeight())), path); } if(state==1){ //分享图片 Utils.startShareImg(path,getContext()); } }else{ JUtils.Toast("未知错误"); } state =-1; } }; public JoyImageViewHolder(ViewGroup parent) { super(parent, R.layout.itemview_joyimage); simpleDraweeView =$(R.id.joyImg); title = $(R.id.joy_title); share =$(R.id.joy_share); download =$(R.id.joy_download); collect =$(R.id.joy_collect); sccrenWidth = JUtils.getScreenWidth(); share.setOnClickListener(this); download.setOnClickListener(this); collect.setOnClickListener(this); } @Override public void setData(ImageJoy data) { super.setData(data); this.data =data; height =Float.valueOf(data.getHeight()); width = Float.valueOf(data.getWidth()); layoutParams= simpleDraweeView.getLayoutParams(); layoutParams.height= (int)((height/width)*sccrenWidth); simpleDraweeView.setLayoutParams(layoutParams); title.setText(data.getTitle()); simpleDraweeView.setImageURI(Uri.parse(data.getThumburl())); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.joy_download: //download state=0; JUtils.Toast("正在下载..."); downloadBitmap(getContext(),data.getThumburl()); break; case R.id.joy_collect: //collect SqlModel.addCollectImg(getContext(),new NetImageImpl(data.getSourceurl(),data.getThumburl(),Integer.parseInt(data.getWidth()),Integer.parseInt(data.getHeight()))); JUtils.Toast("已收藏"); break; case R.id.joy_share: //share state=1; JUtils.Toast("正在准备分享"); downloadBitmap(getContext(),data.getThumburl()); break; default: state =-1; break; } } public void downloadBitmap( final Context context, String url){ SaveBitmapModel.getFrescoDownloadBitmap(context, url).subscribe(new BaseBitmapDataSubscriber() { @Override protected void onNewResultImpl(final Bitmap bitmap) { SaveBitmapModel.getSaveBitmapObservable(bitmap,context).subscribe(saveSubscriber); } @Override protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) { JUtils.Toast("操作失败!"); } }, CallerThreadExecutor.getInstance()); } }