您好,登錄后才能下訂單哦!
本篇內容介紹了“Android如何實現多點觸控功能”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
使用了Android的系統API實現了多點觸控功能,多點觸控對設備的硬件有一定的要求,目前市面上的手機幾乎都能實現多點觸控了。
實現多點觸控最關鍵的API:
event.getPointerCount()
意思是這事件中包含的數據的指針的數量,總是大于或等于1。可以簡單理解為放在手機屏幕上的手指的數目,為什么總是大于或等于1呢?因為觸發事件需要用手指去觸屏,一觸屏必然產生一個指針。
重寫這兩個函數:
一:
public boolean onTouchEvent(MotionEvent event)
調用一個觸屏事件,通過操作event完成觸屏相關事件的處理。
上代碼:
public boolean onTouchEvent(MotionEvent event) { // if(event.getX(1)==event.getX(0)&&event.getY(1)==event.getY(0)) if (event.getPointerCount() == 2) { x2 = event.getX(1); y2 = event.getY(1); } x1 = event.getX(0); y1 = event.getY(0); myView.invalidate(); Log.d("multiTouch", event.getPointerCount() + " xy1: " + x1 + ", " + y1 + " xy2: " + x2 + ", " + y2); return super.onTouchEvent(event); }
二:
protected void onDraw(Canvas canvas)
通過重寫onDraw來畫圖,Canvas的意思是“ holds the “draw” calls to draw something”(官方文檔的介紹,覺得這話已經很通俗易懂了)
上代碼:
protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.BLUE); canvas.drawCircle(x1, y1, 30, paint); canvas.drawRect(x2 - 30, y2 - 30, x2 + 30, y2 + 30, paint); paint.setColor(Color.RED); canvas.drawLine(x1, y1, x2, y2, paint); Shader mShader = new LinearGradient(0, 0, 100, 100, new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }, null, Shader.TileMode.REPEAT); paint.setShader(mShader); paint.setTextSize(14); canvas.drawText("xy1: " + x1 + "; " + y1, 80, 50, paint); canvas.drawText("xy2: " + x2 + "; " + y2, 80, 120, paint); }
實現onDraw時需要在繼承自View的一個類中完成
private class TestView extends View{ public TestView(Context context) { super(context); } ...... }
完成以上操作以后主程序就簡單了,初始化然后調用之前寫好的代碼
public class multiTouch extends Activity { public float x1, x2, y1, y2; private TestView testView; @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); x1 = 30; y1 = 30; x2 = 200; y2 = 30; super.onCreate(savedInstanceState); testView = new TestView(this); setContentView(testView); }
實現效果圖
圓圈代表第一次觸屏時的手指,正方形表示第二次觸屏時的手指。
“Android如何實現多點觸控功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。