从资源 XML 中的 android:src 引用我的自定义 BitmapDrawable

发布于 2025-01-04 15:38:24 字数 1968 浏览 1 评论 0原文

我有一个 FrameLayout 如下(两个 android:src 属性都引用 /res/drawable 文件夹中的 .png 文件):

<?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)。为此,我创建了一个自定义 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. 如何在 XML 中指定我的 CustomDrawable(并告诉它使用 @drawable/content
  2. 问题 然后告诉布局 XML 中的 ImageView 指向我的 CustomDrawable

I have a FrameLayout as follows (both android:src attributes refer to .png files in /res/drawable folder):

<?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>

Now, I need to do some debugging for the second ImageView (that referring to @drawable/content). For this purpose, I created a Custom BitmapDrawable as follows:

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

}

Question:

  1. How do I specify my CustomDrawable in XML (and tell it to use @drawable/content)
  2. How do I then tell the ImageView in the layout XML to point to my CustomDrawable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤君无依 2025-01-11 15:38:24

您不能在 xml 文件中执行此操作,但可以在代码中执行此操作:

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

You can't do it xml file, but you can do in code:

((ImageView) findViewById(R.id.ivContent)).setImageDrawable(new CustomDrawable(...))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文