2014-03-05 81 views

回答

0

我建議建立一個自定義組件和壓倒一切的onTouch(View, MotionEvent)。在該方法中,執行一些基本的數學運算來檢查觸摸是否在圓形區域內,當方法消耗觸摸事件時返回true

當您不希望使用觸摸事件時,請不要忘記允許其他觸摸偵聽器通過返回false進行傳播。

+0

thx,如果它是一個簡單的圓圈,我根本沒有問題,但我需要像圖像上的紅色圓圈一樣的形狀 – Gorets

+0

我相信我誤解了這個問題。 –

1

看到https://code.google.com/p/radial-menu-widget/How To Create a Rotating Wheel Control?或自己

保護無效的onDraw(帆布油畫){// TODO自動生成方法存根

px = getMeasuredWidth()/2;  
    py = getMeasuredHeight(); 


    initial = 144; 
    finalangle = 252; 

    centerCircleradius = 30; 
    middleCircleRadius = 140; 




     int init, fina; 
     init = 160;  
     fina = 360; 
     finalOVal.set(px-middleCircleRadius-4, py-middleCircleRadius-4, px+middleCircleRadius+4, py+middleCircleRadius+4); 
     middleOval.set(px-middleCircleRadius, py-middleCircleRadius, px+middleCircleRadius, py+middleCircleRadius); 
     while(init<fina) 
     { 
      circlePaint.setColor(colors[i]); 
      canvas.drawArc(finalOVal,init,10,false, circlePaint); 
      i++; 
      if(i>=colors.length) 
      { 
       i=0; 
      } 
      init = init + 10; 

     } 



     canvas.drawArc(middleOval, 180, 180, false, pencil); 

     midInitial = 180; 


     i=0; 

     //Creating the first Arc 
     if(arcTouched[0]) 
     { 

      canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     else 
     { 
      canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     canvas.drawBitmap(bitmap.get(0), null, (putBitmapTo(midInitial, 36, 140, px, py)), null); 
     midInitial+=36; 

     if(arcTouched[1]) 
     { 

      canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     else 
     { 
      canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     canvas.drawBitmap(bitmap.get(1), null, (putBitmapTo(midInitial, 36, 140, px, py)), null); 
     midInitial+=36; 

     if(arcTouched[2]) 
     { 

      canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     else 
     { 
      canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     canvas.drawBitmap(bitmap.get(2), null, (putBitmapTo(midInitial, 36, 140, px, py)), null); 
     midInitial+=36; 
     //Creatring the second Arc 

     if(arcTouched[3]) 
     { 

      canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     else 
     { 
      canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     canvas.drawBitmap(bitmap.get(3), null, (putBitmapTo(midInitial, 36, 140, px, py)), null); 
     midInitial+=36; 

     if(arcTouched[4]) 
     { 

      canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     else 
     { 
      canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody); 
      canvas.drawArc(middleOval, midInitial, 36, true, pencil); 
     } 
     canvas.drawBitmap(bitmap.get(4), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);   
     canvas.drawCircle(px, py-10, 40, pencil); 
     canvas.drawCircle(px, py-10, 39, smallCircleCore); 

     canvas.drawCircle(px, py-10, 35, bigArc); 
     canvas.drawCircle(px, py-10, 20, smallCircleCore); 

     canvas.drawCircle(px, py-10, 15, bigArc); 
     canvas.drawLine(px-8, py-10, px+8, py-10, lineCore); 

    canvas.save(); 
}