2013-02-01 40 views
0

您好我正在做一个应用程序的所有设备使用显示metrics.i尝试使用下面的代码,但在一些设备,如1024/600,480/800和密度160其工作perfect.but在像四百八十零分之三百二十零密度160文字大小其他一些设备的问题和应用distrubing同时显示images.please任何具有一种想法认为我....如何使用displaymetrics在android的所有设备应用程序

register.class: 
    public class register extends Activity { 
    /** Called when the activity is first created. */ 
     float screenHeight,screenWidth,screendensity; 
      float textsize1; 

     @Override 
    public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
screenHeight = displaymetrics.heightPixels; 
screenWidth = displaymetrics.widthPixels; 
screendensity = displaymetrics.densityDpi; 
Log.i("screenHeight",""+screenHeight); 
Log.i("screenWidth",""+screenWidth); 
Log.i("screendensity",""+screendensity); 


switch(displaymetrics.densityDpi){ 



case DisplayMetrics.DENSITY_HIGH: 

    //set text size 
    textsize1=10; 
    break; 

case DisplayMetrics.DENSITY_MEDIUM: 

    //set text size 
     textsize1=15; 
    break; 

case DisplayMetrics.DENSITY_LOW: 
     textsize1=8; 
    //set text size 
    break; 
} 

    setContentView(R.layout.registerlh); 


prntnm=(EditText)findViewById(R.id.parentedit); 
    prntnm.setTextColor(Color.BLACK); 
    InputFilter[] FilterArray1 = new InputFilter[1]; 
    FilterArray1[0] = new InputFilter.LengthFilter(20); 
    prntnm.setFilters(FilterArray1); 


    RelativeLayout.LayoutParams parentedit1 = (RelativeLayout.LayoutParams) prntnm.getLayoutParams();  
    parentedit1.height=(int)(50*(screenHeight/600)); 

    parentedit1.width= (int)(300*(screenWidth/1024)); 

    parentedit1.topMargin=(int)(330*(screenHeight/600)); 
    parentedit1.leftMargin=(int)(670*(screenWidth/1024)); 
} 
     } 

回答

0

使用尺寸不硬编码值。文本使用 “SP” 和图像和其他人使用 “DP”

例如:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<dimen name="textsize">15sp</dimen> 
</resources> 

在各值的文件夹使用dimen.xml文件(如值,值-V11,值-V14)和提供适当的尺寸。

例子来使用这些值:

textView.setTextSize(getResources().getDimension(R.dimen.textsize)); 
+0

索里我没有得到u.i要在2.2版本上运行起以上所有版本和所有设备的应用程序。 – user1083266

+0

如果是这种情况,那么创建单独的布局文件(布局,布局大,布局xlarge,布局小)也检查此链接http://developer.android.com/guide/practices/screens_support.html和http ://developer.android.com/guide/practices/tablets-and-handsets.html – SKK

+0

thankyou.i完成了整个应用程序使用displaymetrics.i文字大小。使用显示指标任何其他解决方案是在那里显示所有大小的文字 – user1083266

相关问题