2010-05-02 4 views
0

Я пытаюсь создать код с возможностью рисования и изменить цвет на основе некоторых критериев. Когда я пытаюсь установить Drawable в качестве фона ImageView, он отображает, но не позволяет мне устанавливать какие-либо дополнения. Я понял, что мне нужно установить образ ImageView с помощью функции setImageDrawable(), чтобы иметь возможность устанавливать дополнение.Настройка ресурса ImageView как Drawable

Проблема, с которой я столкнулся, заключается в том, что когда я устанавливаю ее через функцию setImageDrawable(), ничего не отображается.

Вот что я написал:

<?xml version="1.0" encoding="utf-8"?> 

  ImageView icon = (ImageView) row.findViewById(R.id.icon); 
    ShapeDrawable mDrawable; 

    int x = 0; 
    int y = 0; 
    int width = 50; 
    int height = 50; 

    float[] outerR = new float[] { 12, 12, 12, 12, 12, 12, 12, 12 }; 

    mDrawable = new ShapeDrawable(new RoundRectShape(outerR, null, null)); 
    mDrawable.setBounds(x, y+height, x + width, y); 



    switch(position){ 

    case 0: 
    mDrawable.getPaint().setColor(0xffff0000); //Red 
    break; 
    case 1: 
    mDrawable.getPaint().setColor(0xffff0000); //Red 
    break; 
    case 2: 
    mDrawable.getPaint().setColor(0xff00c000); //Green 
    break; 
    case 3: 
    mDrawable.getPaint().setColor(0xff00c000); //Green 
    break; 
    case 4: 
    mDrawable.getPaint().setColor(0xff0000ff); //Blue 
    break; 
    case 5: 
    mDrawable.getPaint().setColor(0xff0000ff); //Blue 
    break; 
    case 6: 
    mDrawable.getPaint().setColor(0xff696969); //Gray 
    break; 
    case 7: 
    mDrawable.getPaint().setColor(0xff696969); //Gray 
    break; 
    case 8: 
    mDrawable.getPaint().setColor(0xffffff00); //Yellow 
    break; 
    case 9: 
    mDrawable.getPaint().setColor(0xff8b4513); //Brown 
    break; 
    case 10: 
    mDrawable.getPaint().setColor(0xff8b4513); //Brown 
    break; 
    case 11: 
    mDrawable.getPaint().setColor(0xff8b4513); //Brown 
    break; 
    case 12: 
    mDrawable.getPaint().setColor(0xffa020f0); //Purple 
    break; 
    case 13: 
    mDrawable.getPaint().setColor(0xffff0000); //Red 
    break; 
    case 14: 
    mDrawable.getPaint().setColor(0xffffd700); //Gold 
    break; 
    case 15: 
    mDrawable.getPaint().setColor(0xffff6600); //Orange 
    break; 
    } 

    icon.setImageDrawable(mDrawable); 
    icon.setPadding(5, 5, 5, 5); 

Это приводит к пространству для ImageView, но нет изображения.

Спасибо, Роб

ответ

0

При реализации методы прорисовки пользовательского ImageView вы можете просто нарисовать оттенок над изображением. Для приятного розового блеска попробуйте:

@Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     Rect    frame; 
     Paint    paint = new Paint(); 

     paint.setStyle(Style.FILL); 
     paint.setARGB(102 , 255 , 51 , 51); 
     frame = new Rect(0, 0, getWidth(), getHeight()); 
     canvas.drawRect(frame , paint); 
    } 
+0

Я не очень хорошо знаком со всем этим. Могу ли я все же сделать их с закругленными углами, которые у меня были раньше? – tgai

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