1

我在屏幕上画了大约 130 个点。这点具有 X 和 Y 值(浮点值)。现在,我不知道如何获取 X 和 Y 值,或者我应该如何在 xml 文件中设置 x 和 y?

我是这样弄的。但这不起作用。例如第一点是:x: 100.340, y: 200.000

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="myArray_0">
      <item>100.340,200.000</item>
      <item>350.450,400.900</item>
      <item>300.250,400.415</item>
      ...
   </array>

...

4

1 回答 1

1

我以前遇到过和你类似的问题。我认为 Android 没有用于读取 res->values XML 文件中的键值对的工具。将 XML 文件保存在 assets 目录而不是 res-> values 目录中。然后,从您的活动中,读取资产文件夹中的 XML 文件。我认为以下代码有效。我没有测试它。如果它不起作用,请告诉我。

在您的资产文件夹中,您可以放置​​一个名为“myPoints”的 XML 文档。

<resources>
    <point Pointz="Point1">
        <item Xpoint="100.340"></item>
        <item Ypoint="200.000"></item>
    </point>
    <point Pointz="Point2">
        <item Xpoint="350.450"></item>
        <item Ypoint="400.900"></item>
    </point>
<end></end>
</resources>

在您的活动中:

Double Xpoint, Ypoint;
int PointNum;

//Call the ReadXML() method somewhere in onCreate
private void ReadXML() {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();
            GetXML_Handler doingWork = new GetXML_Handler();
            xr.setContentHandler(doingWork);
            InputSource Isource = new InputSource(this.getActivity().getAssets().open("myPoints.xml")); 
            xr.parse(Isource);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }

//This is a private class inside whatever Acitivity u are in.
private class GetXML_Handler extends DefaultHandler {
    boolean foundWord = false;
    int i = 0;
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            if (localName.equals("point")) {
                foundWord = true;
                PointNum = attributes.getValue("Pointz"); //so PointNum will either be saved as "Point1" or "Point2"
            }
            } else if (foundWord == true && localName.equals("item")) {
                Xpoint = attributes.getValue(0);
                Ypoint = attributes.getValue(1);
            } else if (localName.equals("end")) {
                foundWord = false;              
            }
        } // End of startElement
}// End of Private Class GetXML_Handler

如果您坚持将 XML 文件保存在 res-> values 文件夹中,您可以通过两种方式保存点:第一种方式是在 X 和 Y 点之间交替。

<string-array name="points">
        <item>100.340</item>  //X coordinate #1
        <item>200.000</item>  //Y coordinate #1
        <item>350.450</item>   //X coordinate #2
        <item>400.900</item>   //Y coordinate #2
</string-array>

第二种方法是将其保存为 2 个数组。一个数组用于 X 坐标,1 个数组用于 Y 坐标。

<string-array name="Xpoints">
        <item>100.340</item>  //X coordinate #1
        <item>350.450</item>   //X coordinate #2
</string-array>
<string-array name="Ypoints">
        <item>200.000</item>  //Y coordinate #1
        <item>400.900</item>   //Y coordinate #2
</string-array>
于 2013-02-17T17:59:49.007 回答