package com.photoselector.ui; import android.content.Context; import android.graphics.Color; import android.graphics.PorterDuff; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnLongClickListener; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ImageView; import android.widget.LinearLayout; import com.nostra13.universalimageloader.core.ImageLoader; import com.photoselector.R; import com.photoselector.model.PhotoModel; /** * @author Aizaz AZ * */ public class PhotoItem extends LinearLayout implements OnCheckedChangeListener, OnLongClickListener { private ImageView ivPhoto; private CheckBox cbPhoto; private onPhotoItemCheckedListener listener; private PhotoModel photo; private boolean isCheckAll; private onItemClickListener l; private int position; private PhotoItem(Context context) { super(context); } public PhotoItem(Context context, onPhotoItemCheckedListener listener) { this(context); LayoutInflater.from(context).inflate(R.layout.layout_photoitem, this, true); this.listener = listener; setOnLongClickListener(this); ivPhoto = (ImageView) findViewById(R.id.iv_photo_lpsi); cbPhoto = (CheckBox) findViewById(R.id.cb_photo_lpsi); cbPhoto.setOnCheckedChangeListener(this); // CheckBoxѡ��״̬�ı������ } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (!isCheckAll) { listener.onCheckedChanged(photo, buttonView, isChecked); // ����������ص����� } // ��ͼƬ�䰵���߱��� if (isChecked) { setDrawingable(); ivPhoto.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); } else { ivPhoto.clearColorFilter(); } photo.setChecked(isChecked); } /** ����·���µ�ͼƬ��Ӧ������ͼ */ public void setImageDrawable(final PhotoModel photo) { this.photo = photo; // You may need this setting form some custom ROM(s) /* * new Handler().postDelayed(new Runnable() { * * @Override public void run() { ImageLoader.getInstance().displayImage( * "file://" + photo.getOriginalPath(), ivPhoto); } }, new * Random().nextInt(10)); */ ImageLoader.getInstance().displayImage( "file://" + photo.getOriginalPath(), ivPhoto); } private void setDrawingable() { ivPhoto.setDrawingCacheEnabled(true); ivPhoto.buildDrawingCache(); } @Override public void setSelected(boolean selected) { if (photo == null) { return; } isCheckAll = true; cbPhoto.setChecked(selected); isCheckAll = false; } public void setOnClickListener(onItemClickListener l, int position) { this.l = l; this.position = position; } // @Override // public void // onClick(View v) { // if (l != null) // l.onItemClick(position); // } /** ͼƬItemѡ���¼������� */ public static interface onPhotoItemCheckedListener { public void onCheckedChanged(PhotoModel photoModel, CompoundButton buttonView, boolean isChecked); } /** ͼƬ����¼� */ public interface onItemClickListener { public void onItemClick(int position); } @Override public boolean onLongClick(View v) { if (l != null) l.onItemClick(position); return true; } }