【问题标题】:Using ViewGroup and View on Android draw and make buttons using canvas在 Android 上使用 ViewGroup 和 View 使用画布绘制和制作按钮
【发布时间】:2012-03-11 14:14:34
【问题描述】:

我正在尝试制作自己的自定义视图,目前它所做的只是在特定的 x 和 y 坐标上绘制图像,然后在不同的位置重复绘制相似的图像。

我希望能够在绘制的每个图像实例上创建一个按钮。如果单击一张图片,则会根据选择的图片导致不同的事情发生。

我该如何实现?

我是否必须为每个图像/按钮组合创建不同的视图,然后设置 onClick 事件?


让我试着更清楚一点 我正在尝试使用六边形制作地图(针对不同玩家的不同类型的地形) 我已经弄清楚如何让他们画画(see here - 他们将有一个边框来显示谁拥有哪些地形)

我刚刚创建了一个自定义视图类,并使用 Canvas 绘制了六边形;但是,我不确定如何将六边形制作成按钮,以便区分选择了哪个六边形以及它应该如何对对手的位置做出反应。

我正在考虑创建一个名为 Terrain 的 ViewGroup 来包含属于玩家的节点(六边形),并拥有一组节点视图,这些节点视图仅在应位于的位置绘制六边形。

问题是,如果按下某个六边形,我可以将每个节点或整个 viewGroup 变成一个按钮(或执行 onTouch)吗?

【问题讨论】:

  • 我手动跟踪图像位置,并检查图像边界内的点击。但我猜你正在寻找一种更自动化的方法。

标签: android view android-canvas android-button viewgroup


【解决方案1】:

如果我理解得很好,你应该这样做:

  • 一个模板 my_pictures.xml,它是一个简单的按钮。
  • 然后您创建一个自定义适配器,作为您想要创建的每种图像的功能。我的意思是,您必须根据需要更改按钮的背景值。然后你做一个notifyDataSetChanged();使用新按钮刷新容器。
  • 对于 Listener,您只需在创建 buttonImages 时将其添加到您的活动或适配器中,我不知道哪个更好。

【讨论】:

    【解决方案2】:

    感谢您的帮助!

    我知道我需要做什么。 我有一个 NodeView 类,在我的 GameActivity 类中,我使用相对布局并设置我想要放置的东西的布局参数

        RelativeLayout rl = new RelativeLayout(this);
    
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(95,95);
        params.leftMargin = 10;
        params.topMargin = 10;
    
    
        params = new RelativeLayout.LayoutParams(95,95);
        params.leftMargin = 10+95*x;
        params.topMargin = 81+(71*y);
        rl.addView(new NodeView (this,0,0,1,1), params);
    

    这帮助我在需要的地方添加了东西,现在我只想弄清楚如何在 x 轴和 y 轴上滚动区域(我尝试了 ScrollView,但这只允许我在 y 轴上滚动 -轴,我正在研究它)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多