Я разрабатываю приложение простого рисования, и мне было интересно, можно ли добавить видимый указатель при касании холста? Я имею в виду что-то похожее на индикатор мыши на ПК. Причиной этого является то, что при использовании ластика не видно, где именно зарегистрировано ваше касание и с указателем, это помогло бы (особенно при использовании пальца, потому что перо довольно точная). Я пробовал с другими подобными темами, но никто из них не ответил на вопрос.Как добавить указатель касания к применению?
ответ
взяты из этого поз: 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 Manifest.
EDIT:
вот DrawView.java, который реализует View.OnTouchListener и определяет несколько режимов отрисовки. однако в нем отсутствуют индикаторы.
в основной деятельности внутри setListener для DrawView вы переопределяете метод 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. Как добавить Stimulsoft report.js к применению Ember
- 2. Ключ к применению Javascript
- 3. Как добавить событие касания к подсмотру UIView?
- 4. Как добавить событие касания к UIView?
- 5. Excel к применению
- 6. «присоединиться» к применению?
- 7. Сигнал MongoDB к применению
- 8. Как добавить поддержку зефира к существующему предварительному применению Marshmallow
- 9. Добавление Minicolors к применению MVC
- 10. Symlink к применению в макинтоше
- 11. AppleScript: путь к текущему применению
- 12. относительный путь к отличному применению
- 13. Установленное количество запусков к применению
- 14. «Намерение» от действия к применению
- 15. Добавить переносные события касания к веб-приложению
- 16. Установленный подход к применению платежей к векселям
- 17. Как добавить зону касания кнопки?
- 18. Node-инспектор не прикрепиться к применению
- 19. Добавить группу в SignalR по применению MVC
- 20. Как добавить событие касания к цветному колесу холста HTML5?
- 21. Как добавить события касания к классу? .. Предпочтительно через jquery
- 22. iPhone-кодирование - Как добавить поворот к событию касания?
- 23. IE11 шунтирующий указатель событий в событиях касания?
- 24. Как пересылать касания к MKMapView
- 25. wx.ProgressDialog + py2exe приводит к применению аварии
- 26. многострочный ввод в терминале Перейти к применению
- 27. Как добавить указатель узла в векторный указатель?
- 28. Программных перейти к применению в XMonad
- 29. Добавление приложения extjs4 к применению CodeIgniter
- 30. Физический путь к применению в global.asax
Ответ на этот вопрос да. – GurV
Как насчет ответа на титульный вопрос? – DiTi
Вы сказали: «Я пробовал». Покажи нам это. – GurV