本文主要是介绍android 特殊按钮drawable属性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自:http://blog.csdn.net/xgpww/article/details/7659781
android控件button,TextView,imageview等可以设置四周显示一个图片(drawable);
最简单的方法就是在XML里设置属性drawableLeft,drawableTop,drawableRight,drawableBottom 里来设置图片,一般是透明的比较好,
背景图片来做点击效果
但有时需求是要动态更换图片,可以参考下面的方法:
setCompoundDrawables(left, top, right, bottom);
setCompoundDrawablesWith
意思是设置Drawable显示在text的左、上、右、下位置。
(Textview、Button都可以)
但是两者有些区别:
setCompoundDrawables 画的drawable的宽高是按drawable.setBound()设置的宽高,所以才有The Drawables must already have had setBounds(Rect) called.意思是说使用之前必须使用Drawable.setBounds设置Drawable的长宽。
而setCompoundDrawablesWith
eg:
online_themeDownButton.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.market_downloading_cancel), null, null, null);
用textview显示带图片的效果
转自:http://blog.csdn.net/linshutao/article/details/5797344
main.xml Java代码 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <TextView 8 android:layout_width="fill_parent" 9 android:layout_height="wrap_content" 10 android:text="@string/hello" 11 /> 12 <TextView android:text="TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 13 <TextView android:text="TextView02" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 14 </LinearLayout> GridView.java package a.gridview; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.TextView; public class GridView extends Activity { private TextView text; private TextView text1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (TextView) findViewById(R.id.TextView01); Drawable draw = this.getResources().getDrawable(R.drawable.srvmng); text.setCompoundDrawablesWithIntrinsicBounds(null, draw, null,null); text.setText("应用"); text1 = (TextView) findViewById(R.id.TextView02); Drawable draw1 = this.getResources().getDrawable(R.drawable.srvmng); int w = draw1.getIntrinsicWidth(); int h = draw1.getIntrinsicHeight(); Rect rect = draw1.getBounds(); text1.setCompoundDrawablesWithIntrinsicBounds(null, zoomDrawable(draw1,32,32), null,null); text1.setText("设置"); } static Drawable zoomDrawable(Drawable drawable, int w, int h) { int width = drawable.getIntrinsicWidth(); int height= drawable.getIntrinsicHeight(); Bitmap oldbmp = drawableToBitmap(drawable); // drawable转换成bitmap Matrix matrix = new Matrix(); // 创建操作图片用的Matrix对象 float scaleWidth = ((float)w / width); // 计算缩放比例 float scaleHeight = ((float)h / height); matrix.postScale(scaleWidth, scaleHeight); // 设置缩放比例 Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true); // 建立新的bitmap,其内容是对原bitmap的缩放后的图 return new BitmapDrawable(newbmp); // 把bitmap转换成drawable并返回 } static Bitmap drawableToBitmap(Drawable drawable) // drawable 转换成bitmap { int width = drawable.getIntrinsicWidth(); // 取drawable的长宽 int height = drawable.getIntrinsicHeight(); Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565; // 取drawable的颜色格式 Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应bitmap Canvas canvas = new Canvas(bitmap); // 建立对应bitmap的画布 drawable.setBounds(0, 0, width, height); drawable.draw(canvas); // 把drawable内容画到画布中 return bitmap; } }
这篇关于android 特殊按钮drawable属性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!