我正在开发一个自定义类来帮助调整其他类的布局。
这是班级
var xAxis = d3.svg.axis().scale(xScale).orient("bottom")
.ticks(5).tickFormat(function(d) {
var today = new Date();
var r = today.getFullYear() + "-" + (today.getMonth() +1) + "-" + today.getDate();
var today = new Date(r);
var hrs = (d - today)/(1000*60*60);
if (hrs == 0)
return "NOW";
else
return hrs;
}).tickSize(0).outerTickSize(0);
之前,我使用类:
public class LayoutResize{
Context context;
DisplayMetrics displayMetrics = new DisplayMetrics();
public int width(int sizeX)
{
//((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//getResources().getDisplayMetrics();
int screenWidth = displayMetrics.widthPixels * sizeX / 100;
Log.d("displayMetrics", "dismet" + displayMetrics);
return screenWidth;
}
public int height(int sizeY)
{
//((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//getResources().getDisplayMetrics();
int screenHeight = displayMetrics.heightPixels * sizeY / 100;
return screenHeight;
}
}
将 DisplayMetrics displayMetrics = new DisplayMetrics();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
LayoutResize layoutResize = new LayoutResize();
RelativeLayout mLayout= (RelativeLayout) findViewById(R.id.mLayout);
int mLayoutWidth = layoutResize.width(90, displayMetrics);
...
}
的宽度调整为窗口大小的90%。
我曾经从我使用mLayout
类的每个类传递displayMetrics
值。过去是这样的:
LayoutResize
现在,正如public int width(int sizeX, displayMetrics)
{
...
}
课程所示,我试图传递百分比值。
我已尝试使用这些注释代码,但每个代码返回LayoutResize
都会返回null值..我在这里缺少什么?
答案 0 :(得分:1)
在LayoutResize
课程中,您创建了一个新的displayMetrics
,而不是使用您在onCreate
上实例化的那个。{/ p>
您可以在LayoutResize
中创建构造函数,并将displayMetrics
作为参数传递,如下所示:
public class LayoutResize{
DisplayMetrics displayMetrics;
public LayoutResize (DisplayMetrics displayMetrics){
this.displayMetrics = displayMetrics;
}
public int width(int sizeX)
{
int screenWidth = displayMetrics.widthPixels * sizeX / 100;
Log.d("displayMetrics", "dismet" + displayMetrics);
return screenWidth;
}
public int height(int sizeY)
{
int screenHeight = displayMetrics.heightPixels * sizeY / 100;
return screenHeight;
}
}
然后你实例化如下:
LayoutResize layoutResize = new LayoutResize(displayMetrics);
希望有所帮助