2014-04-20 3 views
0

Как я могу создать прямоугольник, который можно рисовать с помощью рамки, только не заполняя цвет из кода, а не из XML ... Есть ли способ сделать это с помощью кода? Действительно Ценю ваш помогает ...Как создать переносимый из Java в Android?

Благодаря @Xaver и @Vipul для Ответ: D

EDIT:

Вы можете создать вытяжке с бордюром вокруг него так же, как @vipulmittal предложил с помощью GradientDrawable.

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

EDIT2:

Метод setBackground для 16 уровня API и и 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); 
    } 
} 

А затем эв erytime установить фон в ImageView вы просто должны позвонить:

ImageViewHelper.setBackground(imageView, drawable); 
+0

см. Http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html – pskink

ответ

0

Вы можете создать Bitmap с цветом, как это:

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); 

EDIT:

Вы можете создать Drawable с рамкой вокруг него так же, как @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); 
    } 
} 

А потом каждый раз установить фон из ImageView вы просто должны позвонить:

ImageViewHelper.setBackground(imageView, drawable); 
+0

Прошу прощения, что я не разъясняю вам ... Но я хочу, чтобы вы могли действовать как граница с изображением ... Цвет рамки должен быть изменен во время выполнения, если новый цвет был возвращен от 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. –

Смежные вопросы