【问题标题】:Android: Drawing Bitmap in Specific Location, Refusal to DrawAndroid:在特定位置绘制位图,拒绝绘制
【发布时间】:2012-01-31 06:01:02
【问题描述】:

让我从编写 Java 的新手开始,所以我希望得到一个完整的解释。不仅仅是一堆代码,而是一些在网站上给出了为什么以及应该在哪里的东西

我目前正在尝试编写一个应用程序,但是我在使用 Canvas 和在其上绘制我想要的位图时遇到了一些问题。这是我绘制图像的代码:

Canvas canvas = null;
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.image);
canvas.drawBitmap(image, 10, 800, null);

此方法(预期)会引发空指针异常。但是,将“画布”定义为 null 是 Eclipse 给我的唯一选择。当试图将其定义为

Canvas canvas = new Canvas();

Android 只是拒绝绘制位图。我确定我的图像位于 res/drawable/image 如果有帮助,图片保存为“image.png”

如何让 Android 在特定位置显示/显示我的图像/位图我已要求它绘制图像 (10x800)?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    编写解决编译器错误的废话并不能改变它是废话的事实! :)

    您必须以另一种方式获取对 Canvas 对象的引用。您可能希望更具体地了解您究竟想要做什么,以便我们可以建议您应该如何去做。 (例如,您是否尝试仅显示图像以及其他一些视图?您是否尝试创建自定义视图?您可能只想考虑使用 ImageView)

    编辑:

    您应该在 developer.android.com 阅读有关 Android 架构的信息。如果您只是尝试显示图像,则可能没有理由直接使用画布。尽管如此,您可以通过扩展 View 类在自定义 View 中进行绘制

    class myView extends View{
    
        Bitmap bm;
    
        loadBitmap()
        {
            bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
        }
    
        @Override
        public void draw(Canvas c)
        {
           c.drawBitmap(bm, XCORD, YCORD, null);
        }
    }
    

    如果您不需要自定义视图,只需使用 ImageView 类

    class MyActivty extends Activity{
       @Override
       public void onCreate(Bundle b)
       {
           super.onCreate(b);
           ImageView iv = new ImageView(this);
           iv.setImageResource(R.drawable.pic);
           setContentView(iv);
       }
    }
    

    警告:这些方法调用是我在脑海中写下的,它们可能有点偏离。

    【讨论】:

    • 我只是试图让 Android 在当前视图中以 10X800 的线绘制位图... 这样做的代码将不胜感激,或者只是给我画布必须被初始化以防止 NUllPointer 同时允许 Android 绘制和显示位图
    • 第一个解决方案,无论是在我的项目中还是在新项目中,都会导致 Eclipse 出现“隐式超级构造函数 View() 未定义为默认构造函数。必须定义显式构造函数”上的“类 CustomView 扩展视图”错误{' 特别是其中的“CustomView”部分...添加 'public CustomView(Context context) { super(context); // TODO 自动生成的构造函数存根 }' 正如 Eclipse 所建议的那样,解决这个问题,Android 怎么不显示图像(是的,我调用了 c.drawBitmap)请帮助,我会尽快尝试第二种解决方案,然后回复
    • 很抱歉,但据我所知,您似乎根本没有阅读过 Android 的文档。 (更不用说,在您尝试编写 Android 应用程序之前,您可能需要学习更多关于一般编程的知识)。阅读简介并遵循 developer.android.com 上的所有教程。
    • 您的第二个解决方案在一个新项目上成功通过,但 Android 怎么不显示我的图像,那个没有意义。图像被放入iv,iv被设置为内容视图...我必须把ImageView放在我的XML中吗? (请原谅我,我对 Android 还很陌生,开发网站似乎没有任何意义,我迷路了)而且我已经完成了所有的教程,没有人在一个特定的地方检查图像,互联网上没有任何内容给出一个有效的教程...
    • developer.android.com/resources/tutorials/hello-world.html 遵循这个,而不是文本视图,只需像我建议的那样使用 ImageView。如果它仍然不起作用,请尝试其他图像文件。此外,您可能想了解 View 和 Activity 之间的区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多