Android应用程序应该在Playstore中可以看到普通的屏幕设备和平板电脑,并且在两者中都应该看起来很完美(屏幕分辨率)

时间:2013-05-18 07:03:48

标签: android android-layout android-manifest google-play android-screen

我最近在playstore中发布了android应用程序(sdk版本4.2)。我的要求是 - 这个应用程序应该在Playstore上可见 - 大屏幕设备(包括三星Galaxy Tab 2 p3100),以及普通的屏幕设备。 我还希望我的应用程序显示在设备中(版本2.2 - 4.2)。

这是代码段,我被建议用于满足我的要求。

 <supports-screens
   android:smallScreens="true"
   android:normalScreens="true"
   android:largeScreens="true"        
   android:anyDensity="true" 
   android:xlargeScreens="true"
/>

<uses-sdk android:minSdkVersion="8"
    />

有两种情况,具体取决于上述代码。

  1. 当我在manifest.xml中包含上述代码时

    在清单中包含上述代码似乎可以帮助我实现我的目标 平板电脑和平板电脑市场上我的应用程序可见的要求 小屏幕设备。但是,在这种情况下,应用程序屏幕仅覆盖 从Playstore / market下载时,平板电脑的半屏尺寸 以及以类似方式显示(覆盖半屏幕) 部分)在平板电脑上进行调试。

  2. 当我在manifest.xml中不包含上述代码时

    不包括清单中的上述代码,在调试应用程序时似乎工作正常,因为应用程序的所有屏幕都能在普通屏幕设备(手机)以及大型/ x大屏幕设备上完美显示(平板电脑),但仅限于调试。该应用程序在平板电脑的Playstore中变得不可见。

  3. 因此,这两种情况都不是我要求的解决方案。

    清单中的权限和功能如下

    <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> 
    <uses-feature android:name="android.hardware.telephony" android:required="false" /> 
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> 
    <uses-feature android:name="android.hardware.camera" android:required="false" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.GET_TASKS" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    

    这是我的布局之一(xml),在平板电脑上调试时只消耗一半的屏幕尺寸。

       <?xml version="1.0" encoding="utf-8"?>
       <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:fillViewport="true">
    
          <RelativeLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/rl"
            android:background="#000000"
            android:focusableInTouchMode="true">
    
             <LinearLayout
               android:layout_width="fill_parent"
               android:layout_height="40dp"
               android:gravity="center_vertical"
               android:orientation="horizontal"
               android:background="#0074AF">
    
                <LinearLayout
                   android:paddingLeft="5px"
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_vertical"
                   android:layout_gravity="center_vertical"
                   android:orientation="horizontal"
                   android:weightSum="10">
    
                    <TextView android:id="@+id/label"
                      android:layout_weight="8.8"
                      android:layout_marginLeft="5dip"
                      android:textSize="22sp"
                      android:textStyle="bold"
                      android:layout_width="wrap_content"
                      android:textColor="#ffffff"
                      android:gravity="center_vertical"
                      android:layout_gravity="center_vertical"
                      android:text="@string/login"
                      android:layout_height="wrap_content"/>
    
                       <TextView android:id="@+id/version_no"
                         android:layout_weight="1.2"
                         android:textSize="14sp"
                         android:textStyle="bold"
                         android:layout_width="wrap_content"
                         android:textColor="#222222"
                         android:gravity="center_vertical"
                         android:layout_gravity="center_vertical"
                         android:text="@string/version"
                         android:layout_height="wrap_content"/>
    
                 </LinearLayout>
             </LinearLayout>
    
             <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginLeft="4dp"
                android:layout_marginRight="4dp"
                android:layout_marginTop="45dp"
                android:background="@drawable/round_borders"
                android:orientation="vertical"
                android:paddingTop="10dp" >
    
                 <TextView
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginBottom="5dp"
                  android:paddingBottom="0dp"
                  android:paddingTop="0dp"
                  android:textColor="#000000"
                  android:textSize="20px"
                  android:text="Username*"
                  android:id="@+id/user"/>
    
                 <EditText
                   android:id="@+id/name"
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:layout_marginBottom="2dp"
                   android:paddingBottom="0dp"
                   android:paddingTop="0dp"
                   android:singleLine="true"
                 />
    
                 <TextView
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:layout_marginBottom="5dp"
                   android:paddingBottom="0dp"
                   android:paddingTop="0dp"
                   android:textColor="#000000"
                   android:textSize="20px"
                   android:text="Password*"
                   android:id="@+id/pswd" />
    
                 <EditText
                  android:id="@+id/pass"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginBottom="10dp"
                  android:paddingBottom="0dp"
                  android:paddingTop="0dp"
                  android:singleLine="true"
                  android:password="true"
                 />
    
                 <TextView
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginBottom="5dp"
                  android:paddingBottom="0dp"
                  android:paddingTop="0dp"
                  android:textColor="#000000"
                  android:textSize="20px"
                  android:text="AccountId*" />
    
                <EditText
                  android:id="@+id/accid"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginBottom="10dp"
                  android:paddingBottom="0dp"
                  android:paddingTop="0dp"
                  android:inputType="date"
                  android:singleLine="true"
                 />
    
                 <CheckBox android:id="@+id/check1"
                   android:layout_width="fill_parent"
                   android:textColor="#000000"
                   android:layout_height="wrap_content"
                   android:text="@string/remember_me" />
    
                 <LinearLayout
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:orientation="horizontal"
                   >
    
                 <Button
                   style="@style/RedButtons"
                   android:layout_width="270dip"
                   android:layout_height="50dip"
                   android:layout_marginTop="10dp"
                   android:gravity="center"
                   android:paddingBottom="3dp"
                   android:paddingTop="3dp"
                   android:id="@+id/login"
                   android:text="@string/login"
                   android:textSize="20sp" />
    
                 <Button
                   style="@style/RedButtons"
                   android:layout_width="0dip"
                   android:layout_height="0dip"
                   android:layout_marginTop="10dp"
                   android:layout_marginLeft="70px"
                   android:gravity="center"
                   android:paddingBottom="3dp"
                   android:paddingTop="3dp"
                   android:id="@+id/exit"
                   android:text="@string/exit"
                   android:visibility="gone" />
    
                </LinearLayout>
    
                <LinearLayout 
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginTop="10dp"
                  android:layout_marginBottom="5dp"
                  android:paddingBottom="0dp"
                  android:paddingTop="0dp"
                  android:orientation="vertical">
    
                <TextView
                  android:id="@+id/new_user_txt"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"  
                  android:textColor="#000000"
                  android:textSize="16sp"
                />
    
            </LinearLayout>
         </LinearLayout>
      </RelativeLayout>
     </ScrollView>
    

    在平板电脑和手机中调试时工作正常,当我从manifest.xml中删除支持屏幕的代码片段和使用-sdk标签时,屏幕也显得很好。但是,这不是真正的解决方案(因为应用程序将隐藏在Playstore中,在这种情况下),我想。

    请让我知道,为了摆脱这个问题,我们可以做些什么。

3 个答案:

答案 0 :(得分:1)

缩放行为称为“屏幕兼容模式”。 Google建议您更改布局,不要求此模式。然后,您可以按照自己的方式保留<supports-screens>元素。

我没有尝试过这个,但似乎可以使用largestWidthLimitDp属性来强制使用大屏幕设备的屏幕兼容模式。

<supports-screens
    android:largestWidthLimitDp="320"
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"        
    android:xlargeScreens="true"/>

答案 1 :(得分:0)

此代码应该适合您

  <supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"        
  />

 <uses-sdk android:minSdkVersion="3"/>

答案 2 :(得分:0)

它为我工作

<compatible-screens  
 android:smallScreens="true"
 android:normalScreens="true"
 android:largeScreens="true"
 android:anyDensity="true"
 /> 

并将minsdk版本定义为1(即适用于所有版本的设备)

<uses-sdk android:minSdkVersion="1"/>

如果您的应用不支持少于8的Android版本,请在您的启动画面活动中使用此代码以防止应用程序崩溃

if( Integer.parseInt(android.os.Build.VERSION.SDK) < 8){
            Toast.makeText(getApplicationContext(), "Please upgrade your phone to 2.2+", Toast.LENGTH_LONG).show();
          }