當前位置:首頁 » 文件傳輸 » android訪問尺寸
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

android訪問尺寸

發布時間: 2022-05-18 11:10:32

❶ 設計師如何為Android應用標注尺寸

設計 Android 應用的最佳實踐:
1. 畫布大小定位 720 x 1280,72 dpi
2. 只使用偶數單位的尺寸,比如 96 px 的列表項高度,16 px 的邊距,64 px 的圖標邊長
3. 只使用 24 pt,28 pt,36 pt 和 44 pt 的字體
4. 設計完成以後,所有尺寸的 px 值除以 2 作為 dp 數值交給工程師
5. 所有字體的 pt 值除以 2 作為 sp 數值交給工程師
6. 所有切圖變成三份,分別是原始大小、縮小 1.5 倍,縮小 2 倍,分別作為 xhdpi,hdpi,mdpi 的資源交給工程師

如果你還有好奇心,可以繼續往下看這個結論是怎麼來的。
相信你已經看過這篇文檔中關於 Android 中各種尺寸單位的介紹,沒看過的最好看一下

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

在 Android 應用設計中涉及到的單位都是密度無關像素(Density-independent Pixels),這個說法太拗口了,通俗點講,Android 應用設計中只用物理尺寸,類似厘米,英寸這種單位,不用像素。之所以這樣,是由於像素在手機領域說不清楚問題,比方說規定列表項高度是 48 px,在 HTC C510e 上看起來就不錯,但在三星 Galaxy SIII 上看起來就會非常矮,導致很難看,這是因為這兩個機器的屏幕的 dpi 相差很大,前一個大約 160 dpi,後一個大約 320 dpi。這就是手機屏幕不同帶來的問題,如果不考慮平板,不同主要是密度不同,而不是尺寸不同,也不是解析度不同,給設計帶來困擾的根本是屏幕密度不同。不幸的是,很少人對這個有概念,通常介紹手機,會說屏幕尺寸,3.5
寸還是 4 寸,會說解析度,480 x 800 還是 720 x 1280,但通常不會介紹屏幕密度是多少。其實通過尺寸和解析度可以算出密度來,dpi 的 定義是 dot per inch,即每英寸的像素點,把解析度和尺寸除一除就能得到。一個不確切的分法是,720 x 1280 的手機很可能接近 320 dpi (Android 里的 xhdpi),480 x 800 的手機很可能接近 240 dpi (Android 里的 hdpi)。

Android 選擇的單位是 dp 和 sp,dp 的定義是「在 160 dpi 的屏幕上,1 dp 大約等於 1 px」。這個說法也很拗口,簡單點說,1 dp ≈ 1 / 160 inch,他就是物理界的一長度單位。用這個單位設計就統一了,比方說規定列表項高度是 48 dp,在所有手機上看起來都差不多是 48 / 160 inch 那麼高,雖然在不同手機上它對應了不一樣多的像素點,但這個轉換是 Android 手機完成的,每個 Android 手機都得知道在我這 1 dp 對應多少像素。sp 也是同樣解釋,18
sp 的字在所有手機上看起來應該都差不多大(自己改了字體大小設置的除外)。看到這里,可能有人會想,那豈不是不同手機顯示的內容不同。確實是這樣,同樣一個列表,在 A 手機上只能顯示五行,但在 B 個手機上就能顯示六行;還是這個列表,在 A 手機上文字左邊的留白就顯得沒有 B 手機多。

鋪陳完了,逐條解釋開始的最佳實踐。

設計師在設計的時候是用不了 dp 的,他不可能拖一個 48 x 48 dp 的框,不可能設置一個 8 dp 的邊距,Photoshop 里全是 px。於是我們就只有挑一個特定密度的屏幕,在這個特定密度的屏幕上,dp 和 px 的關系是確定,把設計做了,再把 px 轉換成 dp 給工程師。另外有一點是,長度可以乘除一下就解決,圖片是不能除的,圖片必須手動縮放。

我們挑哪一個密度好呢?答案是挑密度最大的,因為圖片縮小比放大好,放大會失真,選 320 dpi 作為目標屏幕,為其他屏幕提供圖片時,只需要縮小。而 320 dpi 屏幕的解析度最常見的是 720 x 1280,以這個尺寸作為畫布尺寸,是最帶感的,這樣的設計稿就和應用在最多數的 320 dpi 的機器上運行起來的樣子一樣。當然你可以選其他畫布大小,但再大也不見得方便,這個大小也夠施展了。72 dpi 是 Photoshop 的默認設置,不要改就好,這個數字和後面的換算有關系。

字體的問題,Android 4.0 以後的設計規范中建議只使用四種字型大小,分別是 12 sp,14 sp,18 sp 和 22 sp,這也是 Android framework 用到的全部字型大小。我們需要找到在這個畫布上,這些字型大小和 pt 的對應關系,以及,px 和 dp 的對應關系。有兩種演算法:

  • 演算法一
    根據 dp 的定義「在 160 dpi 的屏幕上,1 dp 大約等於 1 px」,那麼在 320 dpi 的屏幕上,1 dp 約等於 2 px,我們就是為 320 dpi 做的設計,所有 px 值除以 2 就是 dp 值。字體略復雜一點,1 pt = 1 / 72 inch,即在 72 dpi 的畫布上,1 pt = 1 px,我們的畫布就是 72 dpi,又有 1 sp 約等於 2 px(同 dp 的定義),所以 1 sp = 2 pt,所有 pt 值除以 2 就是 sp 值。

  • 演算法二
    可以想像是把一個 320 dpi 的手機屏幕放大到了 Photoshop 里,放大倍數是 320 / 72,即手機上的 1 dp,在畫布上就是 320 / 72 dp,而 1 dp = 1 / 160 inch,所以在畫布上就是 2 / 72 inch,而畫布是 72 dpi,所以在畫布上就是 2 px,即手機上的 1 dp 對應畫布上的 2 px。字體的計算一樣,只是多一個在 72 dpi 上,1 pt = 1 px 的轉換。

  • 至此,都算清楚了,在這個畫布上,px 到 dp,pt 到 sp 都是除以 2 的關系。

    最後,給 320 dpi 做的圖片,到 240 dpi,160 dpi 上就要分別縮小 1.5 倍和縮小 2 倍。120 dpi 的機器已經很罕見,可以不考慮了

❷ Iphone 和 Android 的 APP 界面尺寸分別是多少

iPhone 界面尺寸:320x480、640x960、640x1136

iPad 界面尺寸:1024x768、2048x1536

❸ android app 界面設計按什麼尺寸

android app 界面設計是按720*1280的,切圖上可以點9切圖做到所有手機的適配。

狀態欄、導航欄和主菜單欄,以720*1280的尺寸來設計,那麼狀態欄的高度應為50px,導航欄的高度96px,主菜單欄的高度96px,因為是開源的系統,這里的數值也只能作為參考。

Android為了區別於IOS,從4.0開始提出了一套HOLO的UI風格設計風格,鼓勵將底部的主菜單欄放到導航欄下面,從而避免點擊下方材料誤點虛擬按鍵,很多APP的新版中也採用了這一風格。

(3)android訪問尺寸擴展閱讀:

注意事項:

1、通常情況要定位一個Icon只需給出 上/下邊距,左/右邊距,標注圖標距離只需標到可點擊范圍外

通用型顏色、字體單獨標明一份,通用型模塊只需單獨標明一份,如導航欄。

2、手機可視區域通常為寬度固定,長度超出邊界可滑動,所以標注物體寬度時可按比例說明,如果要標注內容上下居中,左右居中,或等比可不標注。

3、當交付的是一張完整圖片時,不需做機型適配,只需給高清圖(1920*1080)即可,注意進行壓縮。

4、若圖標在不同頁面重復出現,且尺寸相差不大,直接給出最大一份切圖,並在圓形圖標明尺寸,程序會根據需求縮放。

5、當背景是純色時只需給出色值,Android使用16進制色值。

參考資料來源:網路-Android

參考資料來源:網路-界面設計

參考資料來源:網路-狀態欄

參考資料來源:網路-導航欄

參考資料來源:網路-開源系統

參考資料來源:網路-切圖

參考資料來源:網路-UI設計

❹ Android應用如何支持不同尺寸的屏幕

想要Android應用適應不同尺寸的屏幕,思路如下:
一:不同的layout
Android手機屏幕大小不一,有480x320, 640x360, 800x480,讓app適應不同屏幕,需要在res目錄下創建不同的layout文件夾,比如layout-640x360,layout-800x480,所有的layout文件在編譯之後都會寫入R.java里,而系統會根據屏幕的大小自己選擇合適的layout進行使用。
二:hdpi、mdpi、ldpi
在之前的版本中,只有一個drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三個,這三個主要是為了支持多解析度。
drawable- hdpi、drawable- mdpi、drawable-ldpi的區別:
(1)drawable-hdpi裡面存放高解析度的圖片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi裡面存放中等解析度的圖片,如HVGA (320x480)
(3)drawable-ldpi裡面存放低解析度的圖片,如QVGA (240x320)
系統會根據機器的解析度來分別到這幾個文件夾裡面去找對應的圖片。
更正:應該是對應不同density 的圖片
在開發程序時為了兼容不同平台不同屏幕,建議各自文件夾根據需求均存放不同版本圖片。
屏幕方向:
橫屏豎屏自動切換:
可以在res目錄下建立layout-port-800x600和layout-land兩個目錄,裡面分別放置豎屏和橫屏兩種布局文件,這樣在手機屏幕方向變化的時候系統會自動調用相應的布局文件,避免一種布局文件無法滿足兩種屏幕顯示的問題。
不同解析度橫屏豎屏自動切換:
以800x600為例 :
可以在res目錄下建立layout-port-800x600和layout-land-800x600兩個目錄
不切換:
以下步驟是網上流傳的,不過我自己之前是通過圖形化界面實現這個配置,算是殊途同歸,有空我會把圖片貼上來。
還要說明一點:每個activity都有這個屬性screenOrientation,每個activity都需要設置,可以設置為豎屏(portrait),也可以設置為無重力感應(nosensor)。
要讓程序界面保持一個方向,不隨手機方向轉動而變化的處理辦法:
在AndroidManifest.xml裡面配置一下就可以了。加入這一行android:screenOrientation="landscape"。
例如(landscape是橫向,portrait是縱向):
Java代碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ray.linkit"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GamePlay"
android:screenOrientation="portrait"></activity>
<activity android:name=".OptionView"
android:screenOrientation="portrait"></activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
另外,android中每次屏幕的切換動會重啟Activity,所以應該在Activity銷毀前保存當前活動的狀態,在Activity再次Create的時候載入配置,那樣,進行中的游戲就不會自動重啟了!
有的程序適合從豎屏切換到橫屏,或者反過來,這個時候怎麼辦呢?可以在配置Activity的地方進行如下的配置android:screenOrientation="portrait"。這樣就可以保證是豎屏總是豎屏了,或者landscape橫向。
而有的程序是適合橫豎屏切換的。如何處理呢?首先要在配置Activity的時候進行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重寫Activity的 onConfigurationChanged方法。實現方式如下,不需要做太多的內容:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}
寫一個支持多分辨的程序,基於1.6開發的,建立了三個資源文件夾drawable-hdpi drawable-mdpi drawable-ldpi,裡面分別存放72*72 48*48 36*36的icon圖標文件。當我在G1(1.5的系統)上測試時,圖標應該自適應為48*48才對啊,但實際顯示的是36*36。怎麼才能讓其自適應 48*48的icon圖標呢
解決辦法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夾

❺ 如何調整Android的窗口大小

方法一:BlueStacks給力助手修改解析度大小

1

打開BlueStacks模擬器,現在顯示的是全屏幕大小的,也就是和屏一樣大小幕是1440X900

步驟閱讀

2

搜索給力助手,下載並安裝完成。

步驟閱讀

3

打開給力助手,點擊模擬器設置,選擇修改解析度

步驟閱讀

4

彈出自定義藍手指模擬器解析度窗口,輸入我們要設置的尺寸,點擊保存修改。

步驟閱讀

5

重新啟動BlueStacks安卓模擬器,看解析度已經改成我們設置的450X760了

步驟閱讀

❻ Android開發 怎樣獲取屏幕的寬高是多少厘米

我們需要獲取Android手機或Pad的屏幕的物理尺寸,以便於界面的設計或是其他功能的實現。下面就介紹講一講如何獲取屏幕的物理尺寸
下面的代碼即可獲取屏幕的尺寸。
在一個Activity的onCreate方法中,寫入如下代碼:

[java] view plain print?
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

但是,需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。比如說,一部240x320像素的低密度手機,如果運行上述代碼,獲取到的屏幕尺寸是320x427。因此,研究之後發現,若沒有設定多解析度支持的話,Android系統會將240x320的低密度(120)尺寸轉換為中等密度(160)對應的尺寸,這樣的話就大大影響了程序的編碼。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,具體的內容如下:
[html] view plain print?
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" />

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" /> 這樣的話,當前的Android程序就支持了多種解析度,那麼就可以得到正確的物理尺寸了。

[java] view plain print?
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;
public class TextCanvasActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(new MyView(this));

//定義DisplayMetrics 對象
setContentView(R.layout.main);
DisplayMetrics dm = new DisplayMetrics();
//取得窗口屬性
getWindowManager().getDefaultDisplay().getMetrics(dm);

//窗口的寬度
int screenWidth = dm.widthPixels;

//窗口高度
int screenHeight = dm.heightPixels;
TextView textView = (TextView)findViewById(R.id.tv1);
textView.setText("屏幕寬度: " + screenWidth + "\n屏幕高度: " + screenHeight);
}
}

❼ 怎樣獲取Android手機屏幕的大小

下面的代碼即可獲取屏幕的尺寸: 在一個Activity的onCreate方法中,編寫以下代碼:
DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 寬度(PX) int height = metric.heightPixels; // 高度(PX) float density = metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 密度DPI(120 / 160 / 240)
需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。
所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,如下:
這樣當前的Android程序就支持了多種解析度,那麼就可以得到正確的物理尺寸了。

❽ android編程:android中如何獲取屏幕大小

可以通過使用類DisplayMetrics來獲取手機屏幕的解析度大小。DisplayMetrics類是獲取手機屏幕各種屬性的關鍵類。下面通過例子來展示如何獲取手機屏幕的解析度。
在布局文件main.xml中添加一個TextView對象,一個Button對象。其中TextView對象用來顯示獲得的解析度值,Button對象是當點擊時獲取解析度。main.xml的代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="手機解析度為:"/>
<Button
android:id="@+id/btnOK"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="獲取手機解析度"/>
</LinearLayout>

在TestActivity中的代碼如下:

public class TestActivity extends Activity {

private TextView tv;
private Button btn;

//獲取手機屏幕解析度的類
private DisplayMetrics dm;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

tv = (TextView)findViewById(R.id.tv);
btn = (Button)findViewById(R.id.btnOK);
btn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
//獲得手機的寬度和高度像素單位為px
String strPM = "手機屏幕解析度為:" + dm.widthPixels+"* "+dm.heightPixels;
tv.setText(strPM);
}
});
}

}

❾ android屏幕適配做哪幾個尺寸

android屏幕適配尺寸有全屏模式、4:9、8:12多種。

android屏幕適配尺寸有多種,具體的要結合自己的興趣愛好和手機的自身的實際情況,具體設置標准如下:

1、不要使用絕對布局,這會限制你的手機屏幕的更換。

2、盡量使用match_parent ,從而保證屏幕的最大化利用。

3、盡量使用權重(android:layout_weight),保持手機屏幕合理布局。

4、盡量使用android的shape 自定義,形成純色背景。

5、可以在res目錄上新建layout-HxW.xml的文件夾進行在特定解析度下適配。


拓展資料:

由於筆記本電腦採用的液晶屏的大小和解析度是根據它的市場定位決定的,所以為了適應不同人群的消費能力和使用習慣,筆記本電腦的液晶顯示器的尺寸和解析度種類遠遠要比台式液晶顯示器多。