标签: android-screen-support

如何根据设备屏幕尺寸使用RecyclerView?

我有一个后端API端点,它返回JSON一些集合.每组包含10 lines of Json.

例如: curl http://www.something.com?getData=0将给予first 10 elementscurl http://www.something.com?getData=1将返回下一组等.

我正在使用RecyclerViewStaggeredGridView加载来自给定的数据endpoints.现在我只取第一套,它的工作非常好.

我在找什么?

如何RecyclerView按照屏幕尺寸加载数据Android.例如:

假设设备hdpi可以加载25 staggeredGridView英寸RecyclerView.所以,endpoints请按顺序请求:

http://www.something.com?getData=0    // will fetch 0-10
http://www.something.com?getData=10   // will fetch 11-20
http://www.something.com?getData=10&skip=5 // will fetch 21-25
Run Code Online (Sandbox Code Playgroud)

如何动态制作上述流程.这样它适用于所有屏幕尺寸?

顺便说一句,这是我将数据加载到StaggeredGridView适配器的方式:

 mRecyclerView = (RecyclerView) mActivity.findViewById(R.id.staggering_grid);
 mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
 mAdapter = new StaggeredGridAdapter(mContext);
 mAdapter.addItems(response);
 mRecyclerView.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)

可能解决方案

  • 如果我知道Grid我需要根据设备填写多少,那么我可以简单地提出请求,直到我得到数据来填充预期的数字.
  • 我还可以使用Event Bus …

android android-layout android-screen-support android-activity android-recyclerview

6
推荐指数
1
解决办法
667
查看次数

Android - 检测小平板电脑与大手机?

我正在开发的应用程序包含2个独立的布局:一个用于普通手机,另一个用于小型平板电脑,如NOOKcolor.根据屏幕宽度分辨率(当前600dip)做出的决定.它在Nook看起来很棒但在HTC Rezound上看起来很糟糕,它有一个720 x 1280的显示屏.在后一种情况下,无论分辨率越高,所有内容(文本,图像等)看起来都要大得多,因此它会全部聚集起来.

选择合适设备的好方法是什么?也许检测物理尺寸(4.3"vs 7")vs分辨率?

android tablet screen-size android-screen-support

5
推荐指数
1
解决办法
3556
查看次数

Android平板电脑的密度和大小

我在不同的平板电脑和配置上遇到屏幕视图问题.

我有一个平板电脑wodder mitab 800x480px,我的应用程序是完美的.但我创建了一个与我的平板电脑具有相同分辨率的虚拟机,并且文本更大,溢出屏幕.

我有两个文件夹:7英寸平板电脑的布局和较大平板电脑的x尺寸.我尝试过其他7英寸,9英寸和10英寸平板电脑,看起来不错.但是模拟器中的所有情况都是如此严重,以至于你在具有不同密度的平板电脑中花钱.

我在清单中也有这些行:

<supports-screens
    android:largeScreens="true"
    android:anyDensity="true"
    android:xlargeScreens="true"/>
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

谢谢

android android-screen-support

5
推荐指数
0
解决办法
696
查看次数

右侧带有视图的Android布局,占据预设空间,左侧视图可以将屏幕的其余部分填充到一定的限制

我在Android中制作了一个布局(XML文件),它有两个子视图(一个位于屏幕右侧,另一个位于左侧).我希望右边的视图占据一个预定的空间(在dp中)并让左边的视图占用所有剩余的空间达到极限,此时它将停止扩展,这两个布局将只是随着屏幕变大,进一步分开.

奇怪的是,如果我希望右侧的视图是扩展的视图,并且左侧的视图是占用预设空间的视图,这将非常容易.如果您将每个视图设置为所需的宽度(在水平线性布局中),如果两个视图都不适合,Android将自动缩小左侧的视图.

我想在一个布局文件中执行此操作; 这种布局已经设计用于sw512dp-land和sw765dp-land之间的显示.

如果我能找到一种方法让Android缩小左侧的布局(当布局都不能适合指定的大小时),下面的代码就可以工作了.但默认情况下,系统会先缩小右侧的布局.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

<RelativeLayout
    android:id="@+id/left"
    android:layout_width="150dip"
    android:layout_height="fill_parent"
    android:background="@color/red" >
</RelativeLayout>

<LinearLayout
    android:id="@+id/right"
    android:layout_width="100dip"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@color/green" >
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如果我不需要左边的布局来停止某个点的扩展,那么这个代码(来自@Lokesh)就可以工作了.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

<LinearLayout
    android:id="@+id/left"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_toLeftOf="@+id/right"
    android:background="@color/red" >

</LinearLayout>

<LinearLayout
    android:id="@+id/right"
    android:layout_width="100dip"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@color/green" >
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如果有人认为这是不可能的,那么我也可以采取实际操作或改变我的布局方法.

谢谢!

android android-layout android-xml android-screen android-screen-support

5
推荐指数
1
解决办法
1385
查看次数

限制在平板电脑中安装应用

我有一个Android应用程序,我想停止在Tablet中安装此应用程序。我搜索了许多网站。我有一些想法,并遵循了。但这并不限制。

这是我访问过的一些站点。

Android清单仅限平板电脑

http://android-developers.blogspot.in/2011/09/preparing-for-handsets.html

我尝试将supports-screens应用程序安装在平板电脑中。这该怎么做?

注意:我的应用程序的minsdkversion = 8,targetsdkversion = 17

编辑1:我已经使用以下代码来查找屏幕大小

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp

WindowManager wm=getWindowManager();
DisplayMetrics dm=new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
deviceWidth=dm.widthPixels;
deviceHeight=dm.heightPixels; 
if((deviceHeight< 640 && deviceWidth<480)|| (deviceHeight<480 && deviceWidth< 640))
  {
      //large screen - TABLET

  }
Run Code Online (Sandbox Code Playgroud)

但是我不知道where to put this code to restricts installation and …

android android-screen-support

5
推荐指数
1
解决办法
3251
查看次数

Android : 限制应用程序不在平板电脑上运行

我开发了一个应用程序。现在我希望我的应用程序只能在手机上运行而不是在平板电脑上运行。我搜索并尝试如下:

<supports-screens 
    android:smallScreens="true"
    android:normalScreens="false" 
    android:largeScreens="false"
    android:xlargeScreens="false"
    android:resizeable="false" />
Run Code Online (Sandbox Code Playgroud)

我在 androidmenifest.xml 文件中写了这个。但它没有用。我的应用程序现在也在平板电脑上运行。

我声明是错误的,还是应该包括其他任何内容。

请建议我应该怎么做才能限制我的应用程序在平板电脑上运行。

android android-manifest android-screen android-screen-support android-permissions

5
推荐指数
1
解决办法
2914
查看次数

支持多种屏幕尺寸 - Android

我将在Android中开发新的应用程序.此应用程序应仅以纵向(即使是平板电脑)工作.在手机和平​​板电脑上,UI和布局设计应该类似.我们无法改变平板电脑的布局设计,因为它有很大的使用面积.我们必须拉伸所有图像以匹配手机.我们可以使用九个补丁.但我对在多个drawable中使用图像有点困惑.

根据我的分析(可能是错误的...... :))屏幕分为密度和大小.我们可以使用3:4:6:8的缩放比例.但这个比例是基于密度的.但在我的情况下,我必须拉伸整个用户界面来填充平板电脑屏幕.

那么什么是可以用于这样的应用程序的drawables,它可以支持多个设备.我们必须设计哪些屏幕尺寸.

这个应用程序需要近100个布局.所以我打算保持单一布局,并使用每个布局的重量来设计布局,而不是使用尺寸.

此外,如果我使用多个APK来支持不同的屏幕大小,那么用于支持的绘图是什么.小和正常2.大3. Xlarge

android android-screen android-screen-support

5
推荐指数
2
解决办法
2万
查看次数

如何自动调整大小,兼容,调整所有Android设备的屏幕大小

我正在创建一个简单的测验测试应用程序"Target SDK API 16(4.1 Jelly Beans)"屏幕3.7(480x800 hdpi).

这个应用程序在3.7(480x800)上看起来很棒,但是当我在另一个屏幕设备上运行时,如:2.7(240x320),7.0(1024x600),10.1(1280x800),它的屏幕分辨率变得混乱或看起来很糟糕.

为了更好地理解看截图:

2.7(240x320)

http://postimg.org/image/m3sob88mp/

3.7(480x800)

http://postimg.org/image/wf513w0c1/

7.0(1024x600)

http://postimg.org/image/fc298djn5/

10.1(1280x800)

http://postimg.org/image/isk5gon7p/

我希望这与所有屏幕尺寸兼容/外观完美,就像在3.7(480x800)中看起来一样

如何自动调整大小,兼容,调整所有Android设备的屏幕尺寸,使其在每个屏幕分辨率下看起来都很完美.

或者我必须创建不同的应用程序或不同的屏幕大小.

我试图使屏幕兼容的是:将这些行添加到"AndroidManifest.xml"

<supports-screens>

        android:resizeable="true"
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true"

    </supports-screens>
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.usd.quiztest"
    android:versionCode="1"
    android:versionName="1.0" >

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="com.usd.quiztest.Logo"
            android:label="@string/app_name"            
            android:theme="@android:style/Theme.Black.NoTitleBar" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />               
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

        <activity
            android:name="com.usd.quiztest.First"
            android:label="@string/app_name" >
        </activity>                
        <activity
            android:name="com.usd.quiztest.Q1"
            android:label="@string/app_name" > …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-xml android-resolution android-screen-support

5
推荐指数
1
解决办法
5万
查看次数

Android"支持屏幕"不起作用?

我构建了一个应用程序,我试图用小屏幕排除设备.为此,我利用了清单中的支持屏幕元素.

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="false"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="320" />
Run Code Online (Sandbox Code Playgroud)

正如开发者页面的链接所示:例如,典型的手机屏幕最小宽度为320dp.

前一天我注意到有小设备的人仍然提供差评,因为他们仍然可以下载应用程序,并且一些布局元素不会出现在屏幕上.当然,一种解决方案是调整布局,但此刻我的问题是另一个.

似乎android:requiresSmallestWidthDp属性不起作用.事实上,我试图将其设置为700或更高,只是为了进行实验,并将其加载到商店,支持的设备数量不会改变!

我还将SDK的次要版本更改为13以防止与该属性的兼容性问题:

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)

其他属性运行良好,例如,如果我删除普通屏幕,支持的设备数量会下降.

我想删除dpi低于320的设备,但我不能.我无法理解我做错了什么.

更新

有这样一句话:Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用程序不支持小屏幕,则应继续使用其他大小属性. 但:

  • 我不清楚Android 3.2+版本会发生什么.如果我将Android版本13+放在我的清单上,那么android:requiresSmallestWidthDp人们仍可以安装该应用程序,然后呢?
  • 其他大小属性是:android:compatibleWidthLimitDp,和android:largestWidthLimitDp.但他们都认为最大的"最小宽度"而不是我需要的最小宽度.

所以我的问题是,如何防止屏幕小于500像素或360 dpi的人安装我的应用程序?我可以吗?

android android-screen-support

5
推荐指数
1
解决办法
5473
查看次数

xxhdpi 密度在 API 16 中添加,如果我只提供 xxhdpi 资源,&lt;16 会怎样?

我正在研究从 iOS 到 Android 的移植,由于 iOS 人员只给了我所有图形资源的@3x版本,我只将它们放在res/drawable-xxhdpi文件夹中。我知道不提供替代的低分辨率资源不是一个好习惯,但根据官方文档:

默认情况下,Android 会缩放您的位图可绘制对象 [...],以便它们在每个设备上以适当的物理尺寸呈现。例如,如果您的应用程序仅为 [...] 中等屏幕密度 (mdpi) 提供位图可绘制对象,则系统在高密度屏幕上放大它们,在低密度屏幕上缩小它们。

现在,文档还说:

xxhdpi:超高密度屏幕;大约 480dpi。在 API 级别 16 中添加

然后,我的问题。除了xxhdpi之外,我不提供任何位图替代方案,因此在运行 Android API <16 的设备上,这些可绘制对象是否会被渲染?我在 API 10 模拟器上试用了该应用程序,我所有的东西都在那里。应该是吗?如果是,为什么?!?

android bitmap android-screen-support android-resources android-drawable

5
推荐指数
1
解决办法
584
查看次数