带有渐变背景的Android Imagebutton

时间:2014-07-28 21:41:53

标签: android

几天来,我尝试在Android中实现一个简单的Imagebutton,使用动态LinearGradient作为背景。我想要android.R.drawable.btn_default的基本设计,它从按钮的左边缘开始着色到从v = 0-100%(右边缘)以百分比给出的值。按钮左右两侧之间的边缘应该是清晰的(如均衡器)。对于没有NullException错误的任何建议,我将非常感谢!

编辑29.07.14

以下是代码段,正常运行:

 Drawable dr = getResources().getDrawable(android.R.drawable.btn_default);
 Bitmap bitmap = Bitmap.createBitmap(dr.getIntrinsicWidth(), dr.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
 Canvas canvas = new Canvas(bitmap);
 dr.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
 dr.draw(canvas);

 Paint paint = new Paint();
 paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));
 paint.setShader(new LinearGradient(0, 0, canvas.getWidth()*7*vol, 0, new int[] { Color.GREEN, Color.TRANSPARENT }, new float[] { 0, 1 }, Shader.TileMode.CLAMP));
 canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), paint);

 mButtonSpeech.setBackground(new BitmapDrawable(getResources(), bitmap));

但即使没有我的代码的中间部分,将渐变添加到画布,按钮背景看起来并不像我期望的那样(它是小的,在中心没有像其他按钮那样着色,我设置了背景:

 mButtonDraw.setBackgroundResource(android.R.drawable.btn_default);

如果我还将Paint绘制到Canvas中,我会期望默认的按钮背景,在左侧部分着色,就像我可以使用setColorFilter()一样。

0 个答案:

没有答案