有没有办法以编程方式查找应用程序安装的设备是7英寸平板电脑还是10英寸平板电脑?
我是Xamarin的新手并且在第一次申请时苦苦挣扎.我有一个图像,上面有一个入口视图.这样我就创建了一个自定义条目背景.
但是,条目的字体大小不会随着具有不同分辨率的不同设备而缩放.当我调整设备A的字体大小,现在检查设备B上的相同应用程序时,字体大小太大了.
我也尝试在Android代码中动态设置字体大小,如下所述:http: //developer.xamarin.com/recipes/android/resources/device_specific/detect_screen_size/
但这仍然没有给出我想要的结果.在RelativeLayout中也没有百分比定义.
我只是希望我的字体大小保持相对于屏幕大小相同,因此条目始终在背景图像边框内.
我希望任何人都可以帮助我,或者给我一个解决方法的提示.
有没有办法在支持多个屏幕时根据屏幕密度和大小确切知道Android在运行时选择哪种布局(和其他资源)?
我需要知道文件夹的名称.
编辑:
我需要以编程方式知道文件夹的名称.
我正在尝试了解Android中的sp单元,但我无法弄清楚它是如何工作的.该文件说:
SP
与比例无关的像素 - 这与dp单位类似,但它也可以通过用户的字体大小首选项进行缩放.建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户偏好调整它们.
使用DisplayMetrics可以获得scaledDensity,它是:
显示屏上显示的字体的缩放系数.这与密度相同,除了它可以在运行时根据用户对字体大小的偏好以较小的增量进行调整.
因此,鉴于此信息,我假设scaledDensity将随着我更改系统字体大小而改变,并且我可以使用此信息来了解1dp和1sp(scaledDensity / density)之间的比率.
然而,当我在手机(Nexus 4)上测试时,我没有得到我期待的结果.DisplayMetrics.scaledDensity始终返回相同的值(等于DisplayMetrics.density),无论我将手机设置为使用什么字体大小(通过settings -> accessibility -> use large font或settings -> display -> font size).
当我更改字体设置时,我指定的字体会改变大小,因此sp单元按预期工作,但scaledDensity值根本不会改变.
我用来获取scaledDensity的代码是:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity
Run Code Online (Sandbox Code Playgroud)
我做错了什么或者我误解了DisplayMetrics.scaledDensity实际上做了什么?
更新
这是三个屏幕截图,说明了我的意思:

这是应用程序的代码:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
String result = "\n"
+ "density : " + metrics.density + " (24 dp = " + 24 * metrics.density + " px)\n"
+ "scaledDensity: " …Run Code Online (Sandbox Code Playgroud) 我正在为Android制作游戏并使用SurfaceView.
我想知道SmartPhone屏幕信息(高度,宽度等)
我使用这段代码,但是..显示宽度和高度不正确,
红色始终打印为"0"
我想念的是什么?
public class MainActivity extends Activity {
private int width;
private int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width = metrics.widthPixels;
height = metrics.heightPixels;
setContentView(new GameView(this));
}
public class Painter extends Thread
public void run(){
Canvas canvas = null;
long start, end;
int sleep;
while(true) {
if (runnable) {
start = System.currentTimeMillis();
try {
canvas = holder.lockCanvas(null);
paint.setColor(Color.RED);
paint.setTextSize(200);
synchronized (holder) {
canvas.drawText(Integer.toString(main.getHeight()), 600, 800, paint);
canvas.drawText(Integer.toString(main.getWidth()), 300, …Run Code Online (Sandbox Code Playgroud) 一个如何根据屏幕大小Fragment在a中显示多个s ViewPager;如果是小型设备,它会Fragment在一个屏幕上显示 1 。如果它是横向模式的平板电脑,它会Fragment在一个屏幕上显示 2 个,并排显示。如果是纵向模式的平板电脑,它会显示 1 Fragment?