Настройте BitmapDrawable или растровые размеры - PullRequest
0 голосов
/ 24 июля 2011

Я пытаюсь создать интерфейс, похожий на табуляцию, где я буду переключать представления, сдвигая влево / вправо. Я показываю пользователю, на какой странице они находятся, добавляя синее свечение к задней части значка вкладки, показанного здесь:


Я сделал это, создав собственный вид, который будет рисовать свечение фона (если выбрана вкладка), а затем значок. Моя проблема в том, что свечение слишком велико . Все, что мне нужно сделать, это сделать его меньше, чтобы стороны не обрезались, как сейчас (свечение перекрывает страницу внизу по дизайну).

  • Свечение было создано с использованием формы, нарисованной в XML (просто радиальный градиент).

  • Я пытался изменить размер фигуры в XML, но он всегда получается одинаковым. Я попытался настроить атрибуты под и попытался настроить высоту и ширину тоже.


Конструктор:

public TabIconView(Context context, Bitmap tab)
{
    super(context);

    back = BitmapFactory.decodeResource(getResources(), R.drawable.background_blue_glow);
    this.tab = tab;
}

onMeasure и onDraw:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    setMeasuredDimension(tab.getWidth() * 2, tab.getHeight() * 2);
}

@Override
protected void onDraw(Canvas canvas)
{
    width = getMeasuredWidth();
    height = getMeasuredHeight();

    if (selected)
        canvas.drawBitmap(back, (width - back.getWidth()) / 2, (height - back.getHeight()) / 2, null);

    canvas.drawBitmap(tab, (width - tab.getWidth()) / 2, (height - tab.getHeight()) / 2, null);

    super.onDraw(canvas);
}

Любые идеи будут высоко оценены.

Ответы [ 2 ]

1 голос
/ 24 июля 2011

Разобрался. В случае, если кто-то хочет знать ...

public TabIconView(Context context, Bitmap tab)
{
    super(context);
    int backSize = (int) (42 * context.getResources().getDisplayMetrics().density + .5f);

    b = BitmapFactory.decodeResource(getResources(), R.drawable.background_blue_glow);
    back = Bitmap.createScaledBitmap(b, backSize, backSize, false);
    this.tab = tab;
}

Мне нужно было создать масштабированное растровое изображение из растрового изображения, созданного из файла shaperawable.

1 голос
/ 24 июля 2011

Одна из версий Canvas.drawBitmap () позволяет вам указать ширину и высоту, которые должны быть у растрового изображения при отображении на экране. Вы также можете просто перемасштабировать растровое изображение при загрузке (у класса Bitmap есть методы для создания масштабированных версий растровых изображений.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...