首頁>Program>source

我正在開發320 * 480的應用程式.如何使應用程式在480 * 854螢幕上執行? 当我尝試在480 * 854螢幕上執行時,该應用的原始設計看起来很小.是否要為Android中的每个螢幕建立單独的佈局? 如果是這樣,請向我提供示例提示以繼續进行.

最新回復
  • 6月前
    1 #

    我已经實現了自己的 Handling Multiple Screen Resolutions方法

    通過設置 LayoutParams,您当然可以避免此問题 在執行時就 Percentage而言

    維兹威兹 仅与 Problem一起發生 有一些恒定的 Views/Layoutswidth 可以說 height . 280dp 如果我们以程式設計方式設置 Solution的佈局引數,則非常簡單 就 Views/Layouts而言 並且只使用常量 Percentagewidth 必要時,在其他地方尝試使用 height 填補空白或使用 match_parent 並定義每个 weights 相對於其他 View 這將帮助您的佈局在几乎所有螢幕分辨率下看起来都很好

    這是一个示例xml

    Views
    

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/mLayout" android:layout_width="280px" android:layout_height="300px" /> </RelativeLayout> 我用過 Notice: 用於固定大小的佈局的 px 因為在 width/height LayoutParams layoutParams = new LayoutParams(int width, int height);width 视value為 height

    這是設置 pixels的示例代碼 和 width 百分比

    height
    

    現在可能有些人想知道這裏發生了什麼

    final ViewTreeObserver mLayoutObserver = mLayout.getViewTreeObserver(); mLayoutObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { DisplayMetrics metrics = getResources().getDisplayMetrics(); int deviceWidth = metrics.widthPixels; int deviceHeight = metrics.heightPixels; float widthInPercentage = ( (float) 280 / 320 ) * 100; float heightInPercentage = ( (float) 300 / 480 ) * 100; int mLayoutWidth = (int) ( (widthInPercentage * deviceWidth) / 100 ); int mLayoutHeight = (int) ( (heightInPercentage * deviceHeight) / 100 ); LayoutParams layoutParams = new LayoutParams(mLayoutWidth, mLayoutHeight); mLayout.setLayoutParams(layoutParams); } });

    让我解釋一下 float widthInPercentage = ( (float) 280 / 320 ) * 100 是我的 280的宽度 和 LinearLayout 是我的設備螢幕的宽度(我正在開發的螢幕),我知道当前我正在使用分辨率為 320的設備进行測試 ,我正在做的是計算多少 320 x 480 我的佈局涵盖了 area 然後

    percentage

    在這裏,我正在根据螢幕分辨率以及您的 int mLayoutWidth = (int) ( (widthInPercentage * deviceWidth) / 100 )計算佈局的新宽度 在每个 Views/Layouts上看起来都完全一樣

    screen resolution 如果您需要設置一些常數 為你的 Conclusion: 总是在 width/height中設置值 在佈局檔案(即xml)中,然後以程式設計方式設置 Views/Layouts

    px的建議 ,我想你们應该认真考虑改變 LayoutParams 單位到 Google Android Engineers

  • 6月前
    2 #

    為此,您可以參考設備的可用宽度和高度使佈局動態化

    dp/dip
    

    請參考可用尺寸以百分比的形式設置您的佈局

  • 6月前
    3 #

    先生.巴爾,

    我认為您應该遵循以下公式,而不要像

    那樣进行計算
    percentage
    

    我建議您采取以下步骤:

    Display mDisplay= activity.getWindowManager().getDefaultDisplay();
    int width= mDisplay.getWidth();
    int Height= mDisplay.getHeight();
    

    這也將適用於Views,而不適用於文字大小;

  • 6月前
    4 #

    在Android中,您不必遵循绝對分辨率,而應關註螢幕密度。 是的,您可能需要建立不同的佈局以支援各種密度和螢幕尺寸.通常,Android支援四種密度(低,中,高,超高)

    我建議您阅讀支援Android的多螢幕.我认為這將帮助您實現所需的工作.它包含有關設計替代佈局和可绘製內容的各个部分,以及与支援多種螢幕分辨率有關的其他有用資訊。

  • 6月前
    5 #

    欢迎您来堆棧溢位...
    从1.6版開始,Android支援多種螢幕分辨率和密度,分為三類:

    float widthInPercentage = ( (float) 280 / 320 ) * 100; float heightInPercentage = ( (float) 300 / 480 ) * 100; int mLayoutWidth = (int) ( (widthInPercentage * deviceWidth) / 100 ); int mLayoutHeight = (int) ( (heightInPercentage * deviceHeight) / 100 );

    通過使用Android框架API和SDK中引入的工具,開發人員可以控製應用在每个組中的設備上是否出現以及如何出現.有關實現的详细資訊,請參见《 Android開發指南》文章"支援多螢幕".您可以參考此鏈接MultiResolution

    或可以使用

    int baseWidth=320;
    int baseHeight=480;
    int mLayoutWidth = (int) ( (280* deviceWidth) / baseWidth);
    int mLayoutHeight = (int) ( (300* deviceHeight) / baseHeight);
    

      Small: devices with a screen size smaller than the T-Mobile G1 or Samsung I7500, like the HTC Tattoo

      Normal: devices with a screen size roughly the same as the G1 or I7500.

      Large: devices with a screen size larger than the G1 or I7500 (such as a tablet-style device.)

相似問題

  • python:定義__eq__的型別是不可散列的吗?
  • java:如何在另一種方法中使用一種方法的變數?