利用dimens.xml来达到资源的重用

标题是我自己理解的。大意是:有时候我们为了维护一个工程,或者想定义一个button样式,或textView样式,这些样式中包含着文字的大小,背景图片,前置图片等一些资源。而且这个button或textView会在很多地方要用到它,原本我们可以将它的文字大小,图片样式等写在XML中或者代码中。但这样的维护性太差了;一旦要修改的时候,需要挨个文件找,挨个修改。现在我们利用dimens来维护时,只需要修改对应的dimens里定义的值。所有引用它的地方都会自动的修改这样,我们就达到了维护的目的;

我们可以将要定义的属性写在dimens.xml中,以达到资源重复利用;

步骤如下:

1.在values文件夹下建立名为dimens.xml的文件,如下:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string name="test_dimen">文本区域</string>
  4. <string name="test_dimen1">按钮</string>
  5. <dimen name="text_width">150px</dimen>
  6. <dimen name="text_height">100px</dimen>
  7. <dimen name="btn_width">30mm</dimen>
  8. <dimen name="btn_height">10mm</dimen>
  9. <color name="red_bg">#f00</color>
  10. </resources>

2.在layout文件夹下建立名为test_dimens.xml的文件,如下:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <TextView
  7. android:text="@string/test_dimen"
  8. android:id="@+id/myDimenTextView01"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:width="@dimen/text_width"
  12. android:height="@dimen/text_height"
  13. android:background="@color/red_bg"
  14. />
  15. <Button
  16. android:text="@string/test_dimen1"
  17. android:id="@+id/Button01"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. />
  21. </LinearLayout>

3.建立类:

[java] view plaincopy

  1. package com.dim; 
  2. import android.app.Activity; 
  3. import android.os.Bundle; 
  4. import android.widget.Button; 
  5. import android.content.res.*; 
  6. import com.dim.R; 
  7. public class DimensionActivity extends Activity { 
  8. /** Called when the activity is first created. */
  9. private Button btn; 
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) { 
  12. super.onCreate(savedInstanceState); 
  13. //设置当前Activity的布局
  14.         setContentView(R.layout.test_dimens); 
  15. //获取Button实例
  16.         btn=(Button)findViewById(R.id.Button01); 
  17.         Resources r=getResources(); 
  18. float btn_h =r.getDimension(R.dimen.btn_height); 
  19. float btn_w =r.getDimension(R.dimen.btn_width); 
  20.         btn.setHeight((int)btn_h); 
  21.         btn.setWidth((int)btn_w); 
  22. //setContentView(R.layout.main);
  23.     } 

原文地址:

http://blog.csdn.net/kazeik/article/details/8268721
原文地址:https://www.cnblogs.com/suizhikuo/p/3114151.html