所以我创建了一个以编程方式更改布局大小的类。课程是:
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
错了吗?因为每当我尝试记录screenWidth
或screenHeight
时,日志都会返回0。
答案 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);