Ссылаясь на мой пользовательский BitmapDrawable от Android: SRC в ресурсе XML - PullRequest
2 голосов
/ 13 февраля 2012

У меня FrameLayout выглядит следующим образом (оба атрибута android: src ссылаются на файлы .png в папке /res/drawable):

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frameLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/ivFrame"
        android:adjustViewBounds="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/frame" />

    <ImageView
        android:id="@+id/ivContent"
        android:adjustViewBounds="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/content" />

</FrameLayout>

Теперь мне нужно выполнить некоторую отладку для второго ImageView (что относится к @drawable/content).Для этого я создал Custom BitmapDrawable следующим образом:

public class CustomDrawable extends BitmapDrawable {


    public CustomDrawable(Resources res, Bitmap bitmap) {
        super(res, bitmap);
        // TODO Auto-generated constructor stub
    }

    public CustomDrawable(Resources res, InputStream is) {
        super(res, is);
        // TODO Auto-generated constructor stub
    }

    public CustomDrawable(Resources res, String filepath) {
        super(res, filepath);
        // TODO Auto-generated constructor stub
    }

    public CustomDrawable(Resources res) {
        super(res);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onBoundsChange(Rect bounds) {
        Log.d(Constants.LOG_TAG,"CustomDrawable.onBoundsChanged: "+bounds);
        super.onBoundsChange(bounds);
    }

}

Вопрос:

  1. Как мне указать мой CustomDrawable в XML (и сказать ему использовать @drawable/content)
  2. Как мне тогда указать ImageView в XML макета, чтобы он указывал на мой CustomDrawable?

1 Ответ

2 голосов
/ 13 февраля 2012

Вы не можете сделать это XML-файл, но вы можете сделать это в коде:

((ImageView) findViewById(R.id.ivContent)).setImageDrawable(new CustomDrawable(...))
...