Mercurial > dwindows
comparison android/DWindows.kt @ 2608:a11522c30345
Android: Add initial code to handle button presses and long clicks on DWRender.
Android Studio seems to think there is something wrong with the
setOnTouchListener() code but it seems to work.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 16 Jul 2021 18:55:05 +0000 |
parents | 3b9bbd69bb9c |
children | ed2c4a503666 |
comparison
equal
deleted
inserted
replaced
2607:3b9bbd69bb9c | 2608:a11522c30345 |
---|---|
1 package org.dbsoft.dwindows | 1 package org.dbsoft.dwindows |
2 | 2 |
3 import android.R | 3 import android.R |
4 import android.annotation.SuppressLint | |
4 import android.app.Activity | 5 import android.app.Activity |
5 import android.app.Dialog | 6 import android.app.Dialog |
6 import android.app.NotificationChannel | 7 import android.app.NotificationChannel |
7 import android.app.NotificationManager | 8 import android.app.NotificationManager |
8 import android.content.* | 9 import android.content.* |
240 | 241 |
241 class DWRender(context: Context) : View(context) { | 242 class DWRender(context: Context) : View(context) { |
242 var cachedCanvas: Canvas? = null | 243 var cachedCanvas: Canvas? = null |
243 var typeface: Typeface? = null | 244 var typeface: Typeface? = null |
244 var fontsize: Float? = null | 245 var fontsize: Float? = null |
246 var evx: Float = 0f | |
247 var evy: Float = 0f | |
245 | 248 |
246 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { | 249 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { |
247 super.onSizeChanged(width, height, oldWidth, oldHeight) | 250 super.onSizeChanged(width, height, oldWidth, oldHeight) |
248 // Send DW_SIGNAL_CONFIGURE | 251 // Send DW_SIGNAL_CONFIGURE |
249 eventHandlerInt(1, width, height, 0, 0) | 252 eventHandlerInt(1, width, height, 0, 0) |
2869 val dataArrayMap = SimpleArrayMap<String, Long>() | 2872 val dataArrayMap = SimpleArrayMap<String, Long>() |
2870 | 2873 |
2871 render = DWRender(this) | 2874 render = DWRender(this) |
2872 render!!.tag = dataArrayMap | 2875 render!!.tag = dataArrayMap |
2873 render!!.id = cid | 2876 render!!.id = cid |
2877 render!!.setOnTouchListener(object : View.OnTouchListener { | |
2878 @SuppressLint("ClickableViewAccessibility") | |
2879 override fun onTouch(v: View, event: MotionEvent): Boolean { | |
2880 when (event.action) { | |
2881 MotionEvent.ACTION_DOWN -> { | |
2882 render!!.evx = event.x | |
2883 render!!.evy = event.y | |
2884 } | |
2885 MotionEvent.ACTION_UP -> { | |
2886 render!!.evx = event.x | |
2887 render!!.evy = event.y | |
2888 } | |
2889 } | |
2890 return false | |
2891 } | |
2892 }) | |
2893 render!!.setOnLongClickListener{ | |
2894 // Long click functions as button 2 | |
2895 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0) | |
2896 true | |
2897 } | |
2898 render!!.setOnClickListener{ | |
2899 // Normal click functions as button 1 | |
2900 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 1, 0) | |
2901 true | |
2902 } | |
2874 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event -> | 2903 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event -> |
2875 if (event.action == KeyEvent.ACTION_DOWN) { | 2904 if (event.action == KeyEvent.ACTION_DOWN) { |
2876 eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters) | 2905 eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters) |
2877 true | 2906 true |
2878 } | 2907 } |