Tuesday, January 6, 2015

Load resources from XML

This example show how to load resources from xml.


Create /res/values/arrays.xml to define drawable and int, used to load drawable and background color in our ImageViews.
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <array name="resicon">
        <item>@android:drawable/ic_dialog_alert</item>
        <item>@android:drawable/ic_menu_camera</item>
        <item>@android:drawable/ic_menu_compass</item>
        <item>@android:drawable/ic_menu_directions</item>
        <item>@android:drawable/ic_menu_gallery</item>
    </array>
    <array name="rescolor">
        <item>#FF101010</item>
        <item>#FF202020</item>
        <item>#FF303030</item>
        <item>#FF404040</item>
        <item>#FF505050</item>
    </array>

</resources>


package com.example.androidxmlresources;

import android.support.v7.app.ActionBarActivity;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.content.res.TypedArray;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  TypedArray arrayResources = getResources().obtainTypedArray(R.array.resicon);
  TypedArray arrayColors = getResources().obtainTypedArray(R.array.rescolor);

  LinearLayout layout = new LinearLayout(this);
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.setOrientation(LinearLayout.VERTICAL);
  layout.setLayoutParams(params);
  
  TextView textView = new TextView(this);
  textView.setText("android-er.blogspot.com");
  layout.addView(textView);
  
  for(int i=0; i<arrayResources.length(); i++){
   ImageView imageView = new ImageView(this);
   imageView.setImageDrawable(arrayResources.getDrawable(i));
   imageView.setBackgroundColor(arrayColors.getColor(i, 0xFF000000));
   layout.addView(imageView);
  }
  setContentView(layout);
  
  arrayResources.recycle();
  arrayColors.recycle();
 }

}

No comments: