여기 내 ImageAdaper입니다.
public class ImageAdapter extends BaseAdapter {
private Activity mActivity;
private List<String> mImageUrls;
private int mImageWidth;
public ImageAdapter(Activity activity, List<String> imageUrls, int imageWidth) {
this.mActivity = activity;
this.mImageUrls = imageUrls;
this.mImageWidth = imageWidth;
}
@Override
public int getCount() {
return mImageUrls.size();
}
@Override
public Object getItem(int i) {
return mImageUrls.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int pos, View view, ViewGroup viewGroup) {
final ImageView imageView;
if (null == view) {
imageView = new ImageView(mActivity);
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setLayoutParams(new GridView.LayoutParams(mImageWidth, mImageWidth));
} else {
imageView = (ImageView)view;
}
String imageUrl = mImageUrls.get(pos);
ImageCacheManager.getInstance().getImageLoader().get(imageUrl, ImageLoader.getImageListener(imageView, R.drawable.logologo, R.drawable.logologo));
AnimationUtils.addTouchColorChange(imageView, true);
return imageView;
}
}
public class AnimationUtils {
/**
* 给试图添加点击效果,让背景变深
* */
public static void addTouchColorChange(View view, boolean isClick){
view.setOnTouchListener(VIEW_TOUCH_DARK) ;
if(!isClick){
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
/**
* 给试图添加点击效果,让背景变淡
* */
public static void addTouchLight(View view , boolean isClick){
view.setOnTouchListener(VIEW_TOUCH_LIGHT) ;
if(!isClick){
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
/**
* 让控件点击时,颜色变深
* */
public static final OnTouchListener VIEW_TOUCH_DARK = new OnTouchListener() {
/*设定透明值,越小透明度越大*/
public int transparent_level = 150;
public final float[] DARKER = new float[] { 1, 0, 0, 0, -50, 0, 1,
0, 0, -50, 0, 0, 1, 0, -50, 0, 0, 0, 1, 0 };
public final float[] RESTORE = new float[] { 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 };
public final float[] TRANSPARENT = new float[] { 1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, transparent_level - 255
};
int r, g, b;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(v instanceof ImageView){
ImageView iv = (ImageView) v;
iv.setColorFilter(new ColorMatrixColorFilter(DARKER)) ;
} else if (v instanceof TextView){
TextView tv = (TextView) v;
String tvColor = Integer.toHexString(tv.getCurrentTextColor());
b = Integer.parseInt(tvColor.substring(6, 8), 16);
g = Integer.parseInt(tvColor.substring(4, 6), 16);
r = Integer.parseInt(tvColor.substring(2, 4), 16);
tv.setTextColor(Color.argb(transparent_level, r, g, b));
Drawable[] drawables = tv.getCompoundDrawables();
if(null != drawables[0]) {
drawables[0].setColorFilter(new ColorMatrixColorFilter(TRANSPARENT));
}
} else{
v.getBackground().setColorFilter(new ColorMatrixColorFilter(DARKER));
v.setBackgroundDrawable(v.getBackground());
}
break;
case MotionEvent.ACTION_UP:
if(v instanceof ImageView){
ImageView iv = (ImageView) v;
iv.setColorFilter(new ColorMatrixColorFilter(RESTORE)) ;
} else if (v instanceof TextView){
TextView tv = (TextView) v;
tv.setTextColor(Color.argb(255, r, g, b));
Drawable[] drawables = tv.getCompoundDrawables();
if(null != drawables[0]) {
drawables[0].setColorFilter(new ColorMatrixColorFilter(RESTORE));
}
} else{
v.getBackground().setColorFilter(
new ColorMatrixColorFilter(RESTORE));
v.setBackgroundDrawable(v.getBackground());
}
break;
default:
if(v instanceof ImageView){
ImageView iv = (ImageView) v;
iv.setColorFilter(new ColorMatrixColorFilter(RESTORE)) ;
}
break;
}
return false;
}
};
}
어댑터 코드를 게시 할 수 있습니까? –
내 코드를 게시했습니다. 확인해주세요. 고맙습니다. – CodeAlien