Android - 使用类以编程方式根据屏幕大小更改布局大小

时间:2016-01-07 04:14:27

标签: android

所以我创建了一个以编程方式更改布局大小的类。课程是:

public class ActivityResize extends Activity{

    DisplayMetrics displayMetrics = new DisplayMetrics();
    //private Point size = new Point();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        Log.d("getMetrics", "Value : " + displayMetrics);
    }

    public int width(int sizeX)
    {
        int screenWidth = displayMetrics.widthPixels * (sizeX/100);
        return screenWidth;
    }

    public int height(int sizeY)
    {
        int screenHeight = displayMetrics.heightPixels * (sizeY/100);
        return screenHeight;
    }
}

我在做DisplayMetrics错了吗?因为每当我尝试记录screenWidthscreenHeight时,日志都会返回0。

2 个答案:

答案 0 :(得分:0)

您使用displayMetrics.widthPixels * (sizeX/100);计算大小,请注意,如果您的sizeX <100,它将为0,因此结果将为0,要修复它,您可以将sizeX类型更改为{ {1}}或使用

float

答案 1 :(得分:0)

所以我设法找到答案,只使用ActivityResize类(重命名为LayoutResize来减轻混淆)来计算。它有一个onCreate,如果我的记忆对我有用,它就会成为intent的一个类。我将课程改为:

import android.app.Activity;
import android.util.DisplayMetrics;
import android.util.Log;

public class LayoutResize extends Activity{

    public DisplayMetrics displayMetrics = new DisplayMetrics();

    public int width(int sizeX, DisplayMetrics displayMetrics)
    {
        int screenWidth = displayMetrics.widthPixels * sizeX / 100;
        return screenWidth;
    }

    public int height(int sizeY, DisplayMetrics displayMetrics)
    {
        int screenHeight = displayMetrics.heightPixels * sizeY / 100;
        return screenHeight;
    }
}

所以我删除了onCreate getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);,并在我使用此类的其他每个类中添加了getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);。并在DisplayMetrics displayMetrics = new DisplayMetrics();之外宣布onCreate

我使用layoutResize.height(100, displayMetrics);

从任何其他类调用该类