我创建了一个看起来像学校典型统治者的统治者。我想知道的是,这是什么样的公式" int size =(i%2.5 == 0)? 2000:13;"。 我已成功解决了创建此视图但我真的不知道这个公式是如何工作的。谁能解释一下?
public class ColorRulerView extends View {
Paint paint = new Paint();
static final private float pxinch = 500 / 67.f * 25.4f / 16;
float width, height;
public ColorRulerView(Context context, AttributeSet foo) {
super(context, foo);
setBackgroundColor(Color.TRANSPARENT);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(0);
paint.setAntiAlias(false);
paint.setColor(Color.WHITE);
}
public void onSizeChanged(int w, int h, int oldW, int oldH) {
width = w;
height = h;
}
public void onDraw(Canvas c) {
for (int i = 0; ; ++i) {
float x = i * pxinch;
if (x > 5000) {
break;
}
int size = (i%2.5==0) ? 2000 : 13;
c.drawLine(x, 2, x, size, paint);
}
super.onDraw(c);
}
}
答案 0 :(得分:3)
声明
int size = (i%2.5==0) ? 2000 : 13
是ternary操作。
让我们解决这个问题:
(i % 2.5)
:当 i 的值除以2.5时,会产生提醒。所以,如果
i = 3,3%2.5 = 0.5
i = 4,4%2.5 = 1.5
假设 i = 3,结果为0.5,不等于0.因此,大小为13。
如果条件(i % 2.5 == 0)
为true
,则为大小指定值2000 else
,则分配为13.
值可以使此条件true
5,10,15 等。
答案 1 :(得分:0)
我已经解决了这次崩溃。我在一个具有透明背景的片段中创建一个popupWindow,当我触摸背景时,我编码以关闭popupWindow,但是......它崩溃了。我的触摸事件代码是:
background.setOnTouchListener(new View.OnTouchListener{
public boolean onTouch(View v, MotionEvent e){
popupWindow.dismiss;
return true;
}
});
我将代码修改为:
background.setOnClickListener(new View.OnClickListener{
public void onClick(View v){
popupWindow.dismiss();
}
})
一切都已经完成。可能我们必须研究触摸事件系统以获取更多细节...... TAT