2013-02-17 67 views
1

我在屏幕上繪製了大約130點。這指向X和Y值(浮點值)。現在,我不知道如何獲取X和Y值,或者我應該如何設置xml文件中的x和y?android - 從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> 

...

+0

這些點有模式還是可以計算的? – wtsang02 2013-02-17 17:00:54

+0

不,他們沒有圖案... – Johnny 2013-02-17 17:02:08

回答

1

我以前也遇到過類似你這樣的問題。我不認爲Android有用於讀取res-> values XML文件中的鍵值對的工具。 將XML文件保存在資產目錄中而不是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文件>值的文件夾,U可以節省分2種方式:1 的方法是在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座標,另一個數組用於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> 
+0

最後一段代碼對我有幫助。 – Johnny 2013-02-17 18:25:24