[Android] Androidでplistをつかう

よくあるネタですが、いまいち情報が少ない気がするので

https://github.com/tenaciousRas/android-plist-parser

をつかいます。

DownLoadして、展開、インポートします(android-plist-parser-app)だけでいいと思います。 インポートしてパッケージのプロパティ-Android-ライブラリーにチェック 使いたいパッケージのプロパティ-Android-ライブラリに加えます。 これで準備完了。

http://androidstudio.hatenablog.com/entry/2014/07/25/094428 http://androidstudio.hatenablog.com/entry/2014/07/25/103743

が参考になったが、いまいち色々な型がわからないのて、ソースを覗いてみると Array Data Date Dict Integer String True False Real がある。それぞれ(ArrayとDictは除く)setValue、getValueがあり、適当な型に変換できるみたい

上のサイトはDictでの説明だったので、Arrayに値を保持してる場合のサンプル star_body.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<array>
		<real>73.41644287109375</real>
		<real>-0.91436767578125</real>
	</array>
	<array>
		<real>59.398345947265625</real>
		<real>116.23699951171875</real>
	</array>
	<array>
		<real>3.282867431640625</real>
		<real>224.376708984375</real>
	</array>
	<array>
		<real>109.42001342773438</real>
		<real>278.44656372070312</real>
	</array>
	<array>
		<real>191.569091796875</real>
		<real>363.59954833984375</real>
	</array>
	<array>
		<real>273.67523193359375</real>
		<real>278.56390380859375</real>
	</array>
	<array>
		<real>381.81494140625</real>
		<real>226.49664306640625</real>
	</array>
	<array>
		<real>326.7437744140625</real>
		<real>120.42990112304688</real>
	</array>
	<array>
		<real>311.724365234375</real>
		<real>0.2746734619140625</real>
	</array>
	<array>
		<real>192.5704345703125</real>
		<real>23.304428100585938</real>
	</array>
</array>
</plist>
        PListXMLHandler handler = new PListXMLHandler();
        PListXMLParser parser = new PListXMLParser();
        parser.setHandler(handler);
        
        try {
            // assets フォルダの plist ファイルを開き、パースする
            parser.parse(this.getBaseActivity().getAssets().open("star_body.plist"));
        }
        catch (IllegalStateException e){
            // エラー処理を実装する
        }
        catch (IOException e){
            // エラー処理を実装する
        }
        PList plist = ((PListXMLHandler) parser.getHandler()).getPlist();

        Array array = (Array)plist.getRootElement();
        for(int i=0;i<array.size();i++){
            Array point_array = (Array)array.get(i);
            Real r_x = (Real)point_array.get(0);
            Real r_y = (Real)point_array.get(1);
            Float f_x = r_x.getValue();
            Float f_y = r_y.getValue();
            System.out.println("---------------------------");
            System.out.println("x="+f_x+" y="+f_y);
        }

star_body.plistに配列で記録している、座標を出力するだけのもの。 型チェックとかもいれたほうがよいと思います。

One thought on “[Android] Androidでplistをつかう

Comments are closed.