2014-04-20 20 views
0

如何創建一個可繪製邊框的矩形,而不是從代碼中填充不是來自XML的顏色...... 有什麼方法可以使用代碼來完成此操作? 非常感謝你的幫助......如何在Android中創建Java中的drawable?

感謝@Xaver和@Vipul的答案:d

編輯:

您可以創建一個可繪製通過使用建議它周圍的邊框就像@vipulmittal一個GradientDrawable。

GradientDrawable drawable = new GradientDrawable(); 
drawable.setStroke(width, Color.RED); 

EDIT2:

該方法的setBackground是API 16級及以上和setBackgroundDrawable用於以下API級別16.任何東西所以,你必須做的是這樣的:

// Build.VERSION_CODES.JELLY_BEAN is API LEVEL 16 
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
    imageView.setBackground(drawable); 
} else { 
    imageView.setBackgroundDrawable(drawable); 
} 

我傾向於建立一個輔助方法的情況下是這樣的:

public static void setBackground(ImageView imageView, Drawable drawable) { 

    // Build.VERSION_CODES.JELLY_BEAN is API LEVEL 16 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     imageView.setBackground(drawable); 
    } else { 
     imageView.setBackgroundDrawable(drawable); 
    } 
} 

然後EV erytime您設置的ImageView的背景,你只需要撥打:

ImageViewHelper.setBackground(imageView, drawable); 
+0

看到http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html – pskink

回答

0

您可以創建一個位圖用純色是這樣的:

Bitmap bitmap = Bitmap.createBitmap(1, 1, Config.ARGB_8888); 
bitmap.setPixel(0, 0, Color.BLUE); // Set color to blue 

Bitmap resultBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true); 
bitmap.recycle(); 

可以比BitmapDrawable包裹它,如果你真的需要一個Drawable,但我不能從你的問題中告訴你需要什麼。

BitmapDrawable drawable = new BitmapDrawable(resultBitmap); 

編輯:

您可以創建一個Drawable通過使用一個GradientDrawable建議它周圍的邊框就像@vipulmittal。

GradientDrawable drawable = new GradientDrawable(); 
drawable.setStroke(width, Color.RED); 

EDIT2:

setBackground方法是API 16級及以上和setBackgroundDrawable用於以下API級別16.任何東西所以,你必須做的是這樣的:

// Build.VERSION_CODES.JELLY_BEAN is API LEVEL 16 
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
    imageView.setBackground(drawable); 
} else { 
    imageView.setBackgroundDrawable(drawable); 
} 

我傾向於創建情況下,像這樣一個輔助方法:

public static void setBackground(ImageView imageView, Drawable drawable) { 

    // Build.VERSION_CODES.JELLY_BEAN is API LEVEL 16 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     imageView.setBackground(drawable); 
    } else { 
     imageView.setBackgroundDrawable(drawable); 
    } 
} 

然後每次您設置一個ImageView的背景,你只需要撥打:

ImageViewHelper.setBackground(imageView, drawable); 
+0

對不起,我coludn't明確給你...但我想要一個drawable作爲一個圖像的邊框......如果從Json – Creson

+0

返回一個新的顏色,我會誤解,所以在運行期間需要更改邊框顏色。 @vipulmittal有你正在尋找的答案。 –

+0

@ Xavier ...感謝您的setImageDrawable建議,但它的種類替換爲圖像....只有邊框現在是可見的... 我使用了下面的代碼... serviceImg.setImageResource(R.id。圖片); \t \t \t serviceImg.setImageDrawable(ConstantValues.createImageBorder()); – Creson

0

您可以簡單地創建漸變繪製對象,並設置行程吧。

GradientDrawable gd=new GradientDrawable(); 
    gd.setStroke(1, Color.RED); 

只需將其設置爲任意視圖的背景,它將爲視圖繪製邊框。

+0

感謝您的幫助....我會應用這種方法,看看它是否可以幫助我... – Creson

+0

感謝您的答..這幫助了我... 但是,沒有辦法使它從具有2.3.3薑餅和裝置的設備上工作。...... – Creson

+0

此方法也適用於2.3.3設備。 –

相關問題