我開發簡單的繪圖應用程序,我想知道是否有可能觸及的畫布時添加可見的指針?我的意思是類似於PC上的鼠標指示器。其原因是 - 當使用橡皮擦它是不可見哪兒你觸摸註冊,並與指針,這將有助於(用手指觸摸尤其是當,因爲筆是相當精確)。我嘗試了其他類似的主題,但沒有人回答這個問題。如何將觸摸指針添加到應用程序?
回答
從這個POS採取: How to programmatically enable "show touches" option in Android?
•啓用顯示觸摸:
Settings.System.putInt(context.getContentResolver(),
"show_touches", 1);
•要禁用顯示觸摸:
Settings.System.putInt(context.getContentResolver(),
"show_touches", 0);
記住android.permission.WRITE_SETTINGS添加到您的表現。
編輯:
這裏是一個DrawView.java實現View.OnTouchListener並限定多個拉伸模式。但它缺乏指標。
在setListener的drawLayout中,您可以重寫onStartDrawing方法:在這裏您可以決定是否顯示指示符以及如何根據DrawView的當前模式(筆,橡皮擦等)以及其他接口方法如果可見,請移動指示器,並在繪製結束時將其隱藏。檢查代碼:
mDrawView.setOnDrawViewListener(new DrawView.OnDrawViewListener() {
@Override public void onStartDrawing() {
canUndoRedo();
// decide whether or not to show an
// indicator and style it depending on
// mDrawView's attributes and current drawing mode
setIndicator(mDrawView.getDrawingMode(),mDrawView.getDrawWidth());
}
@Override
public void onMove(MotionEvent motionEvent) {
if(isIndicatorVisible){
indicatorView.animate()
.x(motionEvent.getX())
.y(motionEvent.getY())
.setDuration(0)
.start();
}
}
@Override public void onEndDrawing() {
canUndoRedo();
//hide indicator here
if (isIndicatorVisible){
indicatorView.setVisibility(View.GONE);
isIndicatorVisible = false;
}
}
這裏是,我添加到DrawView.java的編輯:
定義新接口方法空隙onMove(MotionEvent motionEvent)
public interface OnDrawViewListener {
void onStartDrawing();
void onEndDrawing();
void onClearDrawing();
void onRequestText();
void onMove(MotionEvent motionEvent); // added this method
}
稱爲內部onToch新方法:
case MotionEvent.ACTION_MOVE:
onDrawViewListener.onMove(motionEvent); // added this line
mDrawMoveHistory.get(mDrawMoveHistory.size() - 1).setEndX(motionEvent.getX()).setEndY(motionEvent.getY());
if (mDrawingTool == DrawingTool.PEN || mDrawingMode == DrawingMode.ERASER) {
mDrawMoveHistory.get(mDrawMoveHistory.size() - 1).getDrawingPathList()
.get(mDrawMoveHistory.get(mDrawMoveHistory.size() - 1).getDrawingPathList().size() - 1)
.lineTo(motionEvent.getX(), motionEvent.getY());
}
invalidate();
break;
這裏的setIndicator方法:
private void setIndicator(DrawingMode drawingMode, int drawWidth) {
if (drawingMode == DrawingMode.ERASER){
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(drawWidth, drawWidth);
indicatorView.setLayoutParams(params);
GradientDrawable border = new GradientDrawable();
border.setStroke(1, 0xFF000000); //black border with full opacity
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
indicatorView.setBackgroundDrawable(border);
} else {
indicatorView.setBackground(border);
}
indicatorView.setVisibility(View.VISIBLE);
isIndicatorVisible = true;
}
}
我已經看到了這個帖子前面,這並不完全是我所需要的,而且是完全肯定,我用我的代碼試了一下。它只是作爲一種解決方法,因爲我得到了我觸摸的點的輪廓。我要求的是一個指針,它可以完全按照它的大小繪製/擦除(繪圖/擦除已經被覆蓋)。我只希望它在畫布上,因爲在工具箱或其他任何地方都沒用。 – DiTi
另一個問題是,這似乎只適用於API <23。後來的版本不允許更改私人設置,因此問題保持打開狀態。 – DiTi
我編輯答案..代碼是在此基礎上github上的項目:https://github.com/ByoxCode/DrawView ..我想我所做的更改,它的工作很好..好運 – msdev16
- 1. 將手持式觸摸事件添加到Web應用程序
- 2. 將選項卡添加到我的sencha觸摸應用程序
- 3. 如何在觸摸時將推針添加到MKMapView(IOS)?
- 4. iOS - 將觸摸手勢添加到UITextField
- 5. 如何將參數傳遞給可可觸摸應用程序
- 6. 如何將自定義工具欄添加到UWP應用程序中的觸摸鍵盤?
- 7. 如何通過觸摸將圖像添加到視圖?
- 8. 如何將觸摸事件添加到UIView的子視圖?
- 9. 如何將觸摸事件添加到UIView?
- 10. 如何將無狀態組件添加到可觸摸組件
- 11. 如何將觸摸控件添加到libGDX中的對象?
- 12. 將用戶添加到應用程序
- 13. 用三根手指觸摸後關閉Android應用程序
- 14. 如何添加指紋登錄到iOS應用程序
- 15. 如何指導圖像添加到應用程序在Android中
- 16. 如何在非觸摸環境下運行觸摸屏應用程序?
- 17. 如何將觸摸事件發送到Android中的特定應用程序
- 18. 尋找文檔指針/教程添加Javascript到Django應用程序
- 19. 將AdMob添加到應用程序
- 20. Erlang:將庫添加到應用程序
- 21. 將圖標添加到應用程序
- 22. 將應用程序添加到頁面
- 23. 將ACL添加到CakePHP應用程序
- 24. 將應用程序添加到Azure AD
- 25. 將應用程序添加到啓動
- 26. 將UINavigationController添加到應用程序
- 27. 將jquery添加到Facebook應用程序
- 28. 將應用程序添加到Django
- 29. 將Settings.bundle添加到iPhone應用程序
- 30. 將iframe添加到Appcelerator應用程序
答案是肯定的。 – GurV
標題問題的答案如何? – DiTi
你說「我試過了」。告訴我們。 – GurV