編輯:關於android開發
1、概述
過去,程序員通常以像素為單位設計計算機用戶界面。例如:圖片大小為80×32像素。這樣處理的問題在於,如果在一個每英寸點數(dpi)更高的新顯示器上運行該程序,則用戶界面會顯得很小。在有些情況下,用戶界面可能會
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="3dip"> <!--0固定1可以擴展--> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="8" android:shrinkColumns="0" android:stretchColumns="1"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="請輸入用戶名:" /> <!-- 這個EditText放置在上邊id為label的TextView的下邊 --> <EditText android:id="@+id/username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/label" android:background="@android:drawable/editbox_background" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="match_parent"> </TableRow> </TableLayout> <Button android:layout_width="800px" android:layout_height="200px" android:text="800px"/> <Button android:layout_width="400dip" android:layout_height="100dip" android:text="400dip"/> </LinearLayout>
package com.example.yanlei.my2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView pTextView=(TextView)findViewById(R.id.label); // 獲取屏幕密度(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕寬(像素,如:480px) int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p) String str= " getDefaultDisplay ,screenWidth=" + screenWidth + "; screenHeight=" + screenHeight+"\n"; // 獲取屏幕密度(方法2) DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320) float xdpi = dm.xdpi; float ydpi = dm.ydpi; str=str + " DisplayMetrics, xdpi=" + xdpi + "; ydpi=" + ydpi+"\n"; str=str + " DisplayMetrics, density=" + density + "; densityDPI=" + densityDPI+"\n"; screenWidth = dm.widthPixels; // 屏幕寬(像素,如:480px) screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px) str=str + " DisplayMetrics screenWidth=" + screenWidth + "; screenHeight=" + screenHeight+"\n"; // 獲取屏幕密度(方法3) dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320) xdpi = dm.xdpi; ydpi = dm.ydpi; str=str + " DisplayMetrics xdpi=" + xdpi + "; ydpi=" + ydpi+"\n"; str=str + " DisplayMetrics, density=" + density + "; densityDPI=" + densityDPI+"\n"; int screenWidthDip = dm.widthPixels; // 屏幕寬(dip,如:320dip) int screenHeightDip = dm.heightPixels; // 屏幕寬(dip,如:533dip) str=str + " DisplayMetrics screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip+"\n"; screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕寬(px,如:480px) screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px) str=str + " DisplayMetrics screenWidth=" + screenWidth + "; screenHeight=" + screenHeight+"\n"; pTextView.setText(str); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
小到難以看清內容。由此我們采用與分辨率無關的度量單位來開發程序就能夠解決這個問題。Android應用開發支持不同的度量單位。
2、度量單位含義
dip: device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬件有關,一般我們為了支持WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。
dp: dip是一樣的
px: pixels(像素). 不同設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。
pt: point,是一個標准的長度單位,1pt=1/72英寸,用於印刷業,非常簡單易用;
sp: scaled pixels(放大像素). 主要用於字體顯示best for textsize。
in(英寸):長度單位。
mm(毫米):長度單位。
[FastDev4Android框架開發]神器ViewGragHelper完全解析,媽媽再也不擔心我自定義ViewGroup滑動View操作啦~(三十三) &nbs
第3章 用C#編寫百度地圖Android手機應用程序(第5講),分類:C#、Android; 日期:2016-02-04 3.5 示例5--多地圖展示 一、簡介 地圖控件
Android開發框架,android框架總覺得不用框架直接開發比較繁瑣,java下有很多,我使用ssh,php下有很多,我使用ThinkPHP,Delphi下還沒有找到
Android 內存洩漏的幾種可能總結 Java是垃圾回收語言的一種,其優點是開發者無需特意管理內存分配,降低了應用由於局部故障(segmentation