android自適應
⑴ android中如何讓程序自適應屏幕大小
不同的android
target會有不同的大小,應用程序的界面需要針對不同的大小調整界面元素的尺寸。而且屏幕也可以在橫屏和豎屏之間切換,界面也需要調整。
默認情況下,當屏幕方面切換時,activity的oncreate()方法會被重新調用,所以可以在其中通過以下代碼來讀取屏的方向:
public
void
oncreate()
{
if(this.getresources().getconfiguration().orientation
==
configuration.orientation_landscape)
{
log.i("info",
"landscape");
}
else
if
(this.getresources().getconfiguration().orientation
==
configuration.orientation_portrait)
{
log.i("info",
"portrait");}}
如果在androidmanifest.xml中加入配置
android:configchanges="orientation|keyboardhidden|navigation
當屏幕翻轉時,activity就不會重復的調用oncreate()、onpause()和onresume().
而是調用onconfigurationchanged(configuration
newconfig)
int
screenwidth,screenheight;
windowmanager
windowmanager
=
getwindowmanager();
display
display
=
windowmanager.getdefaultdisplay();
screenwidth
=
display.getwidth();
screenheight
=
display.getheight();
也有人提到另一種方法:
displaymetrics
dm
=
new
displaymetrics();
getwindowmanager().getdefaultdisplay().getmetrics(dm);
⑵ android開發軟體如何做到自適應屏幕大小及不同解析度的手機
代碼中盡量不要設置控制項的寬高(盡量使用match_parent或者wrap_content)
即使某些時候要一定要設置控制項的大小,那也要用(控制項用dp,字體用sp)
圖片要分多套設計,mdpi里放320*480的;hdpi里放480*800的;xhdpi放720*1280的;xxhdpi里放1080*1920大小的
某些時間需要按屏幕大小平分的,使用android:layout_weight=""這個屬於來平分
不明白郵件我
⑶ android開發如何讓一個app自適應兩種解析度的屏幕
使用dp單位。LinearLayout中合理使用weight權重這個屬性。
⑷ Android程序如何自適應屏幕的方向和大小
不同的Android target會有不同的大小,應用程序的界面需要針對不同的大小調整界面元素的尺寸。而且屏幕也可以在橫屏和豎屏之間切換,界面也需要調整。 默認情況下,當屏幕方面切換時,activity的onCreate()方法會被重新調用,所以可以在其中通過以下代碼來讀取屏的方向: public void onCreate() { if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { Log.i("info", "landscape"); } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { Log.i("info", "portrait");}}如果在androidmanifest.xml中加入配置 android:configChanges="orientation|keyboardHidden|navigation 當屏幕翻轉時,Activity就不會重復的調用onCreate()、onPause()和onResume(). 而是調用onConfigurationChanged(Configuration newConfig) int screenWidth,screenHeight; WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); screenWidth = display.getWidth(); screenHeight = display.getHeight(); 也有人提到另一種方法: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm);
⑸ android如何設置圖片自適應控制項大小
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/ic_launcher"/>
寬度和高度使用fill_parent (填充父窗體)
fill_parent 可以使控制項充滿父控制項,也就是你說的自動使用圖片控制項外的控制項大小。
⑹ 如何讓Android自適應不同解析度或不同屏幕大小的layout布局
一:不同的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 的圖片
在開發程序時為了兼容不同平台不同屏幕,建議各自文件夾根據需求均存放不同版本圖片。
[i]備註:三者的解析度不一樣,就像你把電腦的解析度調低,圖片會變大一樣,反之解析度高,圖片縮小。 [/i]
屏幕方向:
橫屏豎屏自動切換:
可以在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字體大小怎麼自適應不同解析度
Android中一個layout想適配各種屏幕尺寸那麼需要按以下規則去寫layout:
1. 盡量使用wrap_content、match_parent、weight 來規定layout的大小。
2. 要確保布局的靈活性並適應各種尺寸的屏幕,應使用 「wrap_content」 和 「match_parent」 控制某些視圖組件的寬度和高度。
3. 使用 「wrap_content」,系統就會將視圖的寬度或高度設置成所需的最小尺寸以適應視圖中的內容,而 「match_parent」(在低於 API 級別 8 的級別中稱為「fill_parent」)則會展開組件以匹配其父視圖的尺寸。
4. 如果使用 「wrap_content」 和 「match_parent」 尺寸值而不是硬編碼的尺寸,視圖就會相應地僅使用自身所需的空間或展開以填滿可用空間。此方法可讓布局正確適應各種屏幕尺寸和屏幕方向。
5. 如果某些地方必須要規定控制項的大小,那麼要使用dp 或者 dip單位。
6. 欄位必須使用 sp單位。
7. 將不同的圖片放到不同的drawable目錄下,解析度的匹配規則如下:
drawable-mdpi 320 * 480
drawable-hdpi 480*800
drawable-xhdpi 720 * 1280
drawable-xxhdpi 1080 * 1920
drawable-xxxhdpi 1080+