【问题标题】:Android how to draw several lines on an ImageView as another layer?Android如何在ImageView上画几条线作为另一层?
【发布时间】:2015-05-23 02:13:38
【问题描述】:

我想让应用程序通过使用背景图像作为基本视图来绘制几条线以显示用户方向,并且应用程序在背景ImageView 顶部的另一层中“绘制”到它上面。为了达到目标,会做几条线,而且在一个特定的位置,所以它也必须有几层对吗?? 我发现了一个使用 XML 绘制单线的技巧

<View 
  android:id="@+id/line"
  android:layout_width="2dip"
  android:layout_height="300dip"
  android:background="#000000"
/>

但该代码不显示位置,也不是分层形式。

更新: 我希望线条通过绘图而不是通过另一张图片出现

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以自定义SurfaceView 类,将图像设置为背景并在其Canvas 上绘制线条。如果我正确理解了您想要实现的目标,那可能是最简单的方法。

    SurfaceView 是来自 Android 框架的小部件。将其扩展为您自己的:MySurfaceView extends SurfaceView。然后覆盖public void onDraw(Canvas canvas),如android_user77 所述。使用此画布对象进行绘画。最后,在布局 xml 中添加你的类:

    <com.your.app.MySurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/my_image" />
    

    有关为什么使用SurfaceView 而不是View 的详细信息: Difference between SurfaceView and View?

    【讨论】:

    • 那么SurfaceView 是另一个Java 类吗?我在我的 ImageView 上调用那个类的画布?
    • 我已经更新了我的解释。这样,您就不用使用 ImageView。
    • 对不起,我的意思是应用程序自己绘制静态图像.. :( onDraw 是供用户绘制的,对吧?
    • 使用 onDraw,您可以在视图上进行绘画,是的。您可以将视图用作另一个之上的层。静态图片是什么意思?
    • 我明白了,这就是我需要的,视图之上的视图。我所说的静态图像是由应用程序本身绘制的线条并且图像不会改变,例如如果我按下按钮“A”,应用程序绘制的线条是从“开始”点到点开始的线条“一个”
    【解决方案2】:

    您可以通过覆盖 onDraw 方法来扩展视图并进行绘图

    【讨论】:

      【解决方案3】:

      使用 FrameLayout 创建许多“层”。我认为您不想在视图上绘制任何内容。所以不要使用onDraw(),SurfaceView...

      代码如下:

      <FrameLayout ...>
      <ImageView id="@+id/layer1"...> 
      <ImageView id="@+id/layer2"...>
      </FrameLayout>
      

      【讨论】:

      • 是的,我不想在视图本身上绘制任何东西,但我希望应用程序使用线条自己的视图在视图顶部制作线条。我想要通过绘图而不是通过另一张图片出现的线条,我应该更新问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多