ImageView点击效果(变色)
2016-11-22 19:03
267 查看
ImageView点击效果(变色)功能
1 、用两张图片,一张原图,一张深色效果,添加xml文件,点击的时候切换,但必需是固定的图片,而在开发过程中经常是即时网络下载的图片,这样就要用另一种办法
2、自定义一个view extends ImageView,然后通过设置滤镜来实现这一效果,如下面代码
package utils;
import android.content.Context;
import android.graphics.ColorMatrixColorFilter;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* Created by minghao_zl on 14-9-17.
* 公共的蒙版ImageView(点击变暗效果)
*/
public class MaskableImageView extends ImageView{
private boolean touchEffect = true;
public final float[] BG_PRESSED = 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[] BG_NOT_PRESSED = new float[] { 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 };
public MaskableImageView(Context context) {
super(context);
}
public MaskableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MaskableImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setPressed(boolean pressed) {
System.out.println("setPressed");
updateView(pressed);
super.setPressed(pressed);
}
/**
* 根据是否按下去来刷新bg和src
* created by minghao.zl at 2014-09-18
* @param pressed
*/
private void updateView(boolean pressed){
System.out.println("updateView");
//如果没有点击效果
if( !touchEffect ){
return;
}//end if
if( pressed ){//点击
/**
* 通过设置滤镜来改变图片亮度@minghao
*/
this.setDrawingCacheEnabled(true);
this.setColorFilter( new ColorMatrixColorFilter(BG_PRESSED) ) ;
this.getBackground().setColorFilter( new ColorMatrixColorFilter(BG_PRESSED) );
}else{//未点击
this.setColorFilter( new ColorMatrixColorFilter(BG_NOT_PRESSED) ) ;
this.getBackground().setColorFilter(
new ColorMatrixColorFilter(BG_NOT_PRESSED));
}
}
}
在xml中把imageview定义为,注意一定要设置background,否则会报错<utils.MaskableImageView
android:id="@+id/iv_zan1_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/show_index2"
/>
在activity中获取到这个imageView的控件,并运行setPressed方法,当传入值为true时表示按下去(变暗),放开手时传进false表示提起,变回原来图片
iv_zan1_2.setPressed(true);
1 、用两张图片,一张原图,一张深色效果,添加xml文件,点击的时候切换,但必需是固定的图片,而在开发过程中经常是即时网络下载的图片,这样就要用另一种办法
2、自定义一个view extends ImageView,然后通过设置滤镜来实现这一效果,如下面代码
package utils;
import android.content.Context;
import android.graphics.ColorMatrixColorFilter;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* Created by minghao_zl on 14-9-17.
* 公共的蒙版ImageView(点击变暗效果)
*/
public class MaskableImageView extends ImageView{
private boolean touchEffect = true;
public final float[] BG_PRESSED = 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[] BG_NOT_PRESSED = new float[] { 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 };
public MaskableImageView(Context context) {
super(context);
}
public MaskableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MaskableImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setPressed(boolean pressed) {
System.out.println("setPressed");
updateView(pressed);
super.setPressed(pressed);
}
/**
* 根据是否按下去来刷新bg和src
* created by minghao.zl at 2014-09-18
* @param pressed
*/
private void updateView(boolean pressed){
System.out.println("updateView");
//如果没有点击效果
if( !touchEffect ){
return;
}//end if
if( pressed ){//点击
/**
* 通过设置滤镜来改变图片亮度@minghao
*/
this.setDrawingCacheEnabled(true);
this.setColorFilter( new ColorMatrixColorFilter(BG_PRESSED) ) ;
this.getBackground().setColorFilter( new ColorMatrixColorFilter(BG_PRESSED) );
}else{//未点击
this.setColorFilter( new ColorMatrixColorFilter(BG_NOT_PRESSED) ) ;
this.getBackground().setColorFilter(
new ColorMatrixColorFilter(BG_NOT_PRESSED));
}
}
}
在xml中把imageview定义为,注意一定要设置background,否则会报错<utils.MaskableImageView
android:id="@+id/iv_zan1_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/show_index2"
/>
在activity中获取到这个imageView的控件,并运行setPressed方法,当传入值为true时表示按下去(变暗),放开手时传进false表示提起,变回原来图片
iv_zan1_2.setPressed(true);
相关文章推荐
- ImageView和TextView的background点击效果
- Android RichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- Android中ImageView的点击变暗效果
- ImageView用作按钮是添加点击效果Selector
- 使用ViewDragHelp实现ImageView拖动超过屏幕1/2回到屏幕左边,否则到右边,还有一个就是还能实现点击的效果
- Android踩坑日记:点击变暗效果的ImageView实现原理
- 自定义控件实现imageview的点击效果
- Android 自定义Imageview的点击效果
- Android中ImageView的点击变暗效果
- ImageView没有点击效果
- AndroidRichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- 自定义ImageView实现类似微信朋友圈发图片点击出来阴影效果;同时使用Picasso加载网络图片
- 自定义ImageView,点击反馈效果
- Android ImageView点击变暗效果
- Android自定义ImageView实现点击两张图片切换效果
- 自定义控件之ImageView实现点击之后有阴影效果
- AndroidRichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- Android View或Layout点击变色效果
- Android自定义View之仿去哪儿ImageView标签点击效果
- 不用Drawable来实现Imageview的点击效果