2013年3月22日金曜日

xmlで変数を管理-02(TypedArray, obtainTypedArray, getStringArray)

xmlファイルで変数管理の第2弾です。

前回やったことは、定義したファイルの取得とフォーマッターでした。

今回は前回では紹介できなかった、
画像、カラー、配列での変数管理について記します。



■サンプルソース
●xmlファイル

  
    5
    10
    12
  
 
  
    リンゴ
    バナナ
    マンゴー
  
  
  
    1.0f
    2.5f
    10.58f
    
  
  
    #FF0000
    #00FF00
    #0000FF
  
    
  
    @drawable/ic_launcher
    @drawable/logo
  
 

●javaファイル
package com.example.Package;

import android.os.Bundle;
import android.app.Activity;
import android.content.res.TypedArray;

import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //レイアウトの作成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        //レイアウトにパーツを上から順に設置する設定
        oLayout.setOrientation(LinearLayout.VERTICAL);

        //レイアウトの設定
        setContentView(oLayout);
  
         //数値型配列の取得
         int[] iAr = getResources().getIntArray(R.array.xml_int);
        
         //文字列型配列の取得 
        String[] sAr = getResources().getStringArray(R.array.xml_string);
  
        //浮動小数点型配列の取得
        TypedArray tFloat = getResources().obtainTypedArray(R.array.xml_float);
  
        //画像配列の取得
        TypedArray tImage  = getResources().obtainTypedArray(R.array.xml_images);

        //色配列の取得
        TypedArray tColor  = getResources().obtainTypedArray(R.array.xml_color);

        //レイアウトパラム定数(縦横の長さの定数)の格納
        int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
        int MP = ViewGroup.LayoutParams.MATCH_PARENT;

        //レイアウトの横幅・縦幅を設定
        LayoutParams oLayPar = new LinearLayout.LayoutParams(WC, WC);
  
        //数値型の表示
        oLayout.addView(make_TextView(iAr[0]), oLayPar);
        oLayout.addView(make_TextView(iAr[1]), oLayPar);
        oLayout.addView(make_TextView(iAr[2]), oLayPar);

        //文字列とお色の表示
        oLayout.addView(make_TextView(sAr[0], tColor.getColor(0, 0)), oLayPar);
        oLayout.addView(make_TextView(sAr[1], tColor.getColor(1, 0)), oLayPar);
        oLayout.addView(make_TextView(sAr[2], tColor.getColor(2, 0)), oLayPar);

        //浮動小数点型の表示
        oLayout.addView(make_TextView(tFloat.getFloat(0, 0)), oLayPar);
        oLayout.addView(make_TextView(tFloat.getFloat(1, 0)), oLayPar);
        oLayout.addView(make_TextView(tFloat.getFloat(2, 0)), oLayPar);

        //画像の表示
        oLayout.addView(make_ImageView(tImage.getDrawable(0)), oLayPar);
        oLayout.addView(make_ImageView(tImage.getDrawable(1)), oLayPar);

    }

    //イメージビューの作成
    private ImageView make_ImageView(Drawable oBack){
        //イメージビューの生成
        ImageView iv = new ImageView(getApplicationContext());
        //背景の設定
        iv.setImageDrawable(oBack);
        return iv;
    }


    //テキストビューの作成(背景色をつけます)
    private TextView make_TextView(String sMessage, int iColor){
        //テキストビューの生成
        TextView tv = new TextView(getApplicationContext());
        //背景色の設定
        tv.setBackgroundColor(iColor);
        //メッセージの設定
        tv.setText(sMessage);
        return tv;
    }

    //テキストビューの作成
    private TextView make_TextView(String sMessage){
        return make_TextView(sMessage, Color.TRANSPARENT);
    }


    //テキストビューの作成(long型用)
    private TextView make_TextView(float fMessage){
        return make_TextView(String.valueOf(fMessage));
    }
 
    //テキストビューの作成(int型用)
    private TextView make_TextView(int iMessage){
        return make_TextView(String.valueOf(iMessage));
    } 
}

■実行結果



上手く出力できましたか?

xmlファイルの
@drawable/~
の場所は画像を用意して、res→drawable
に適当な画像ファイルを格納してください。

TypedArrayはいろいろなオブジェクトを配列に格納できます。

取り出すときは、TypedArray.get~(添字, エラー時の返し値);
で使えます。



0 件のコメント:

コメントを投稿