2015-10-04 102 views
2

我創建了一把尺子,看起來像一個典型的學校標尺。我想知道的是,這是什麼樣的公式是「int size =(i%2.5 == 0)?2000:13;」。 我已經成功解決了創建這個視圖,但我真的不知道這個公式如何工作。誰能解釋一下?標尺自定義視圖

enter image description here

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

我用這個代碼,但我沒有得到任何UI.can你請幫我 –

+0

嗨@Ashish Agrawal。它不包括顏色漸變,只包括尺子條紋。您可以在佈局中使用條紋。只需在佈局中添加下面的行。 android:layout:height =「100dp」/>。 – donmj

+0

什麼是500和16(pxinch = 500/67.f * 25.4f/16)在你的代碼中? – android

回答

3

聲明

int size = (i%2.5==0) ? 2000 : 13 

ternary操作。

讓打破下來:

(i % 2.5):這將產生該提醒時的值除以2.5。所以,如果

= 3,3%2.5 = 0.5

= 4,4%2.5 = 1.5

假設 = 3,則結果爲0.5,其是不爲0。因此,相等的,尺寸將爲13.

每當條件(i % 2.5 == 0)true,大小被分配一個值2000 else,它是分配13.

值,可以使這種狀況true5,10,15

+0

hi belvi。我知道了。很好的公式工作。謝謝你,你很快就 – donmj

+0

不客氣。很高興它有幫助。 –

0

@donmj https://stackoverflow.com/questions/41342096/confused-by-this-crash-log?noredirect=1#comment70539863_41342096

我已經解決了這個崩潰。我在具有透明背景的片段中創建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