android - 如何从 View 中检索可绘制对象(图片)?

标签 android

我编写代码来绘制 View 。完成后,如何从 View 中获取结果图像。例如,在下面的代码中,我想从 mCustomDrawableView 中获取可绘制对象 (Image)。我怎样才能做到这一点?谢谢。

public class HelloTestGraph extends Activity {
    /** Called when the activity is first created. */

    // @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        LinearLayout lo = (LinearLayout) findViewById(R.id.top_view);
        LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);

        CustomDrawableView mCustomDrawableView = new CustomDrawableView(this);
        mCustomDrawableView.setLayoutParams(param);
        lo.addView(mCustomDrawableView);
    }

    public class CustomDrawableView extends View {
        private ShapeDrawable mDrawable;
        private Drawable mPic;

        public CustomDrawableView(Context context) {
            super(context);

            int x = 10;
            int y = 10;
            int width = 300;
            int height = 50;

            mDrawable = new ShapeDrawable(new OvalShape());
            mDrawable.getPaint().setColor(0xff74AC23);
            mDrawable.setBounds(x, y, x + width, y + height);

            mPic = getResources().getDrawable(R.drawable.example_picture);
            mPic.setBounds(x, y + 100, x + width, y + height+100);
        }

        protected void onDraw(Canvas canvas) {
            mDrawable.draw(canvas);
            mPic.draw(canvas);
        }
    }
}

最佳答案

这有点令人费解,但应该可以帮助您理解。

第 1 步:创建一个所需大小的可变位图并将其存放在一旁。它可以是设备屏幕的大小或最大 View 的大小(取决于您以后要用它做什么)将该位图指针保存为 myBitmap 之类的东西

第 2 步:使用上述位图创建 Canvas 。 “ Canvas myCanvas = new Canvas(myBitmap);”

第 3 步:在您的 onDraw() 方法中,将您的 View 绘制到传入的“canvas”对象和您自己的自定义对象。

protected void onDraw(Canvas canvas) {
    mDrawable.draw(canvas);
    mPic.draw(canvas);
    mDrawable.draw(myCanvas);
    mPic.draw(myCanvas);
}

第 4 步:您的原始位图现在应该仅包含您的 View 的完全渲染版本。

我不确定这是否正是您要查找的内容,但它会为您提供 View 内容的位图(您可以将其转换为图像)。

关于android - 如何从 View 中检索可绘制对象(图片)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2374123/

相关文章:

c# - 如何在 xamarin 的 ListView 中使用 OnItemLongClick

android - Fragment 和 FragmentStatePagerAdapter 中带有 ViewPager 的 fragment 导致异常(带有完整示例)

java - android studio 中的 onStart 和 Override 错误

java - 在 XML 中显示 Java 的设备名称 (Android Studio)

android - Android Studio 中的 gradle sync 是什么?

Android 开发人员控制台 - 设备 = 其他

android - 如何自定义世博推送通知的图标?

android - 无法使用蓝牙 HC-06 发送数据 - 应用程序停止工作

android - 使用 ViewModel 和 ID 从 ROOM DB 访问数据

android - 覆盖应用程序android中的后退按钮