Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

更佳适用于平板的布局 #217

Open
2 tasks done
akers4238 opened this issue May 3, 2024 · 1 comment
Open
2 tasks done

更佳适用于平板的布局 #217

akers4238 opened this issue May 3, 2024 · 1 comment
Assignees

Comments

@akers4238
Copy link

akers4238 commented May 3, 2024

注意事项

  • 确保已经阅读过ReadMe并了解本软件的定位
  • 确保你的新需求/想法合理合法,且不是因为无解决方案的众口难调导致的个例问题

需求描述
请详细描述一下需求场景,以及可能导致的问题;以及你预期的解决方案或效果
如图一_202405030903_46047 1.jpg

一_202405030903_47543 2.jpg

问题可能有加载异常,卡片死机

替代方案
一_202405030903_46047 1.jpg

基本成这样就行

其他信息
通过获取屏幕dpi大小来判定是否切换为平板布局

// 获取屏幕宽度和高度
public static int getDeviceWidth(Context context) {
    return context.getResources().getDisplayMetrics().widthPixels;
}

public static int getDeviceHeight(Context context) {
    return context.getResources().getDisplayMetrics().heightPixels;
}

// 获取屏幕密度
public static int getScreenDensity(Context context) {
    return context.getResources().getDisplayMetrics().densityDpi;
}

// 计算屏幕尺寸(对角线,单位为英寸)
public static double getScreenInches(Context context) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int widthPixels = metrics.widthPixels;
    int heightPixels = metrics.heightPixels;
    double screenInches = Math.sqrt(Math.pow(widthPixels / metrics.xdpi, 2) 
                                   + Math.pow(heightPixels / metrics.ydpi, 2));
    return screenInches;
}
可以简单设置两个布局,利用开屏的时间来检测下屏幕dpi,达到560时开启第二个布局
在Java中,特别是在Android开发环境下,根据DPIdots per inch,每英寸点数)来切换加载布局的情况并不常见,因为DPI通常是固定的,并且不会在应用运行时改变。然而,如果你想要根据DPI来改变布局或者资源,你可以在XML布局文件中使用`sw600dp`、`sw720dp`等 qualifiers 来为不同尺寸的屏幕定义不同的布局。
不过,如果你需要在Java代码中根据DPI来决定是否切换布局,以下是个简单的示例,展示如何在Android应用中根据DPI值来执行特定逻辑:

```java
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.DisplayMetrics;
import android.util.DisplayMetrics;

public class DpiDependentLayoutSwitcher {

    public static boolean shouldLoadDifferentLayout(Context context) {
        // 获取当前屏幕的DPI
        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
        final int dpi = displayMetrics.densityDpi;

        // 检查DPI是否等于560,如果相等则返回true,表示需要加载不同的布局
        return dpi == 560;
    }

    // 这个方法可以被Activity中的onCreate或其他适当位置调用
    public static void loadLayout(Context context) {
        if (shouldLoadDifferentLayout(context)) {
            // 加载为DPI=560特别设计的布局
            // 例如:setContentView(R.layout.your_special_layout_for_dpi_560);
            System.out.println("Loading special layout for DPI 560");
        } else {
            // 加载默认布局
            // 例如:setContentView(R.layout.your_default_layout);
            System.out.println("Loading default layout");
        }
    }
}
代码来源
bykimi.ai
@akers4238
Copy link
Author

歌单展开界面可以增多一点,现在就7个满屏了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants