如何使用Java在AndroidTV上显示4k图像?

问题描述 投票:0回答:1

我正在编写一个 AndroidTV 应用程序,可以在 4K 设备上显示 4K 图像。火棒4K。由于 AndroidTV 和 FireTV 似乎都将其 UI 报告为 1920x1080,无论设备是否为 4K,这怎么办?

如果我使用此代码来报告以像素为单位的尺寸:

DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (windowManager != null) {
    windowManager.getDefaultDisplay().getMetrics(displayMetrics);
}
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;

即使设备是 4K 并连接到 2160p 的 4K 显示器,宽度和高度也将为 1920x1080。

我的布局文件使用简单的FrameLayout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp"
    tools:context="com.app.my.MainActivity"
    android:id="@+id/myframe"
    android:layout_gravity="center"    
>

imageView 本身和框架使用 getWidth() 和 getHeight() 报告为 1920x1080。

任何帮助将不胜感激。

java android
1个回答
0
投票

在AndroidManifest.xml中添加权限

<uses-permission android:name="android.permission.INTERNET" />

检查物理显示尺寸

Display display = windowManager.getDefaultDisplay();
Display.Mode mode = display.getMode();
int width = mode.getPhysicalWidth();
int height = mode.getPhysicalHeight();

Log.d("Display Info", "Width: " + width + " Height: " + height);

设置 ImageView 使用全分辨率:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false; // Prevent Android from scaling down the image
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_4k_image, options);
imageView.setImageBitmap(bitmap);

在应用程序模块的build.gradle文件中添加Glide库

implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'

处理位图加载和内存

Glide.with(this)
     .load(R.drawable.my_4k_image)
     .into(imageView);
© www.soinside.com 2019 - 2024. All rights reserved.