我已经创建了一个Android应用程序,其正常工作的关系7.内部资源文件夹,我创建了两个文件夹,layout,layout-land为Nexus 7"选项卡,一切工作正常,直到日期.现在我想创建一个三星Galaxy S3不同的布局.为此,我用layout-large&创建了一个资源内的文件夹layout-large-land.但是,这就是问题.现在,对于Nexus 7,layout-large文件夹中定义的布局也会被加载.如何阻止?如何为Nexus 7创建不同的布局"tab&Galaxy S3 mobile?我已阅读支持多屏幕文档.但我无法理解,因为Nexus 7的屏幕尺寸为1204 X 800,而三星Galaxy S3的屏幕尺寸为720 X 1280.
如何为具有不同屏幕分辨率和显示尺寸的不同设备创建不同的布局?此外,根据设备大小,我想在我的应用程序中更改几个值.怎么做那个?
我在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
我开发了一个应用程序。现在我希望我的应用程序只能在手机上运行而不是在平板电脑上运行。我搜索并尝试如下:
<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
该应用程序的要求是它应该适用于所有设备.我支持这个
以下布局定义 -
layout/
layout-land/
layout-sw400dp-port/
layout-sw400dp-land/
layout-sw600dp-port/
layout-sw600dp-land/
layout-sw7200dp-port/
layout-sw7200dp-land/
Run Code Online (Sandbox Code Playgroud)
它适用于7"和10"平板电脑.
对于sw400dp设备,例如像Samsung Note等5"设备,他们正在使用layout/和
layout-land/.我如何强制使用这些设备
layout-sw400dp-port/和layout-sw400dp-land/
android android-layout android-screen android-screen-support
我想通过屏幕密度桶对我们的Android开发设备库存进行分类.
我很容易发现PPI单位中每个设备的物理密度.这是作为产品规格的一部分提供的标准信息.
但是,考虑到PPI号码,我如何可以自信地将每个设备分类到密度桶中?的Android文档给出了一个简单的数字用于密度桶,与沿图表示近似和重叠范围.
例如,考虑屏幕密度为370 PPI的设备.Android的XHDPI存储桶为"~320",而XXHDPI存储桶为"~420".370这个桶应该属于哪个?
我一直无法找到铲斗之间边界的精确规格; 或者,如果它们重叠,则确切地说重叠有多大.这是主观的吗?我是否真的需要在每个物理设备上运行测试软件来确定存储桶?
如何通过导航栏和状态栏包含屏幕大小(以像素为单位)?
我已经尝试使用大小,DisplayMetrics但大小不包括软件导航栏.
我的应用程序允许用户截取屏幕截图,然后将其发送到服务器.
在真实设备上,屏幕截图保存在一起,/storage/emulated/0/Pictures/Screenshots/这样就可以了.
但是在模拟器上,当我单击Take screenshot按钮(位于模拟器旁边的面板中)时,屏幕截图会保存到我的计算机上,但我无法在模拟器的文件系统中找到它 - /storage/emulated/0/Pictures/目录存在,但/storage/emulated/0/Pictures/Screenshots/子目录没有.
有什么方法可以访问模拟器上的截图图像,还是有其他方式来截取屏幕截图?
根据> Android 1.6版本中管理资源(图像),我们需要在Drawable-Hdpi,Drawable-Mdpi,Drawable-Lpi文件夹中保留不同分辨率的图像.
根据此页面:http://developer.android.com/guide/practices/screens_support.html,
在低密度部分 - 使用三种分辨率:240*320,240x400,240x432用于小屏幕,普通屏幕,特别是大屏幕.
中密度部分采用相同的方式 - 使用三种分辨率:320x480,480x800,480x854用于小屏幕,普通屏幕,特别是大屏幕.
同样适用于高密度........
但我在这里很困惑:
(1)我怎么知道使用小屏幕,普通屏幕还是大屏幕,我的意思是有什么方法可以知道吗?
(2)我如何知道我使用的是哪种密度?
(3)在Drawable-Hdpi,Drawable-Mdpi,Drawable-ldpi文件夹中,我们应该特别保留哪个分辨率的图像?
请分享您的知识.
三星Note 2和Note 3报告的屏幕桶是什么?"正常"还是"大"?
以下是两部手机的统计数据:
Model Dimensions Density Density Bucket DP Dimensions
note2 720px x 1280px 265dpi hdpi 480dp x 853dp
note3 1080px x 1920px 386dpi xhdpi 540dp x 960dp
Run Code Online (Sandbox Code Playgroud)
来自Diane Hackborn的这篇文章:
http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html
...说"大"屏幕至少480dp x 640dp,所以这两款手机都符合资格.我想知道的是,他们是否实际上将自己报告为具有"大"屏幕,或者他们是否自我识别为具有"正常"屏幕.
不幸的是,我没有手机,所以我不能自己测试.
android android-layout android-screen android-screen-support samsung-mobile
我设法获得了屏幕截图,但结果是这样的:
原来的:
这是我从几个来源获取的代码:
final ImageReader ir = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
VirtualDisplay vd= mediaProjection.createVirtualDisplay("screen", width, height, dpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC, ir.getSurface(), null, null);
final String path=getActivity().getFilesDir().getAbsolutePath()+"/myscreen.jpg";
ir.setOnImageAvailableListener(new OnImageAvailableListener() {
// @Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
FileOutputStream fos = null;
Bitmap bitmap = null;
try {
image = ir.acquireLatestImage();
fos = new FileOutputStream( path);
final Image.Plane[] planes = image.getPlanes();
final Buffer buffer = planes[0].getBuffer().rewind();
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
bitmap.compress(CompressFormat.JPEG, 85, fos);
image.close();
} catch …Run Code Online (Sandbox Code Playgroud)