2015-10-20 61 views
2

大部分时间,班级的名称足够直观,以便使用它的用途。像BufferedReader,InputStreamReader等但最近我已经开始学习android,这个类,android.util.TypedValue被教导用于转换Dip到像素(希望它有许多其他用途,其中我不知道,虽然)。我的名字和工作相处真的很困难。它的用法就像了解类型值类

int px = (int)TypedValue.applyDimension(TypedValue.Complex_Unit_Dip,200,r.getDisplayMetrices()); 

在文档中它说,它用于存储动态类型的数据值,我看不到任何输入:P。所以请我真的很感激,如果有人能帮我解决这个问题。

PS:我是来自编译Android的XML资源加载的学生:)

回答

5

TypedValue保存类型数据的原始表述(如漂浮,尺寸等)。该类主要用作资源框架与应用程序开发人员需要使用存储在资源中的值的位置之间的中介。

例如,您可能想要解析尺寸为android.R.dimen.app_icon_size的值。该值存储在资源表的打包表示中,其中包括来自框架的values.xmldimens.xml等文件的数据。要检索可用表单中的数据,你会做这样的事情:

Resources res = getResources; 
DisplayMetrics metrics = res.getDisplayMetrics(); 
TypedValue outValue = new TypedValue(); 

// Loads the raw data into the typed value 
res.getValue(android.R.dimen.app_icon_size, outValue, true); 

// Converts the raw data into a usable value 
int appIconSizePx = outValue.getDimension(metrics); 

像许多Android班,熟悉类的工作方式是通过source code寻找最好的方式。