标签:androidtint
昨天偶尔看到imageview的这个属性,觉得挺好的一个属性,我怎么现在才注意到这个呢?这个属性的作用是改变imageview中作为src的图片的颜色,在布局文件中是android:tint,在代码中对应的设置方法是imageview.setColorFilter(Color),从方法名中就可以看出就是给imageview添加一层遮罩。
看看效果图:
原始界面
点击按钮之后
再次点击
上代码:
新建一个项目TintDemo
布局文件fragment_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.tintdemo.MainActivity$PlaceholderFragment" > <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Tint演示" /> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:contentDescription="演示" android:src="@drawable/ic_launcher" /> </RelativeLayout>MainActivity
package com.example.tintdemo; import android.app.Notification.Action; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends ActionBarActivity { private Button btn; private ImageView img; private Type type; enum Type { DarkGray, NULL }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); type = Type.NULL;// 初始化img属性设置为空 init(); } /** * 初始化控件 */ private void init() { // TODO Auto-generated method stub btn = (Button) findViewById(R.id.btn); img = (ImageView) findViewById(R.id.img); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub setFilter(type, img); } }); // 实现类似被背景选择器的功能 img.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: img.setColorFilter(Color.DKGRAY); break; case MotionEvent.ACTION_UP: img.setColorFilter(null); break; } return true; } }); } private void setFilter(Type type, ImageView img) { switch (type) { case DarkGray: this.type = Type.NULL; img.setColorFilter(null); break; case NULL: this.type = Type.DarkGray; img.setColorFilter(Color.DKGRAY); break; } } }上面写的代码是用代码实现tint属性,也可以在布局文件中实现,很简单,代码如下
<ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:contentDescription="演示" android:src="@drawable/ic_launcher" android:tint="@android:color/darker_gray" />相比原始的布局文件就多了一句代码
android:tint="@android:color/darker_gray"这样的话在程序初始化的时候我们的图标颜色就是暗灰色了。
// 实现类似被背景选择器的功能 img.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: img.setColorFilter(Color.DKGRAY); break; case MotionEvent.ACTION_UP: img.setColorFilter(null); break; } return true; } });
标签:androidtint
原文地址:http://blog.csdn.net/qmln31821007/article/details/42913557