Pregunta

Soy bastante nuevo en Android y Java. Antes de trabajar con C ++, los eventos se enviaban con mensajes. Ahora me gustaría crear la misma experiencia de usuario para la plataforma Android y agradecería cualquiera de sus sugerencias o comentarios sobre cuál es la mejor manera de vincular los eventos a los controles de los usuarios.

Aquí hay un ejemplo de C ++:

ON_MESSAGE(WM_RECORD_START, &CMainFrame::OnRecordStart)//Method OnRecordStarts() executes on WM_RECORD_START_MESSAGE

...

LRESULT CMainFrame::OnRecordStart(WPARAM wParam, LPARAM lParam)
{

        m_pNetworkCtrl->SetGeoLocationInfo();
        ...
}

...

void CMainFrame::RecordStart()
{
    PostMessage(WM_RECORD_START);
}

En el caso anterior, el método RecordStart () está vinculado a un botón (se ejecuta cuando se presiona un botón ) y publicaciones el mensaje WM_RECORD_START . Cuando se recibe el mensaje WM_RECORD_START , se ejecuta el método OnRecordStart () .

Como se mencionó anteriormente, me gustaría crear una interfaz de usuario receptiva y no estoy seguro de si sería lo suficientemente bueno si el método OnRecordStart () se llama directamente desde RecordStart () :

void RecordStart()
{
    OnRecordStart();
}

Realmente agradecería cualquiera de tus sugerencias.

¿Fue útil?

Solución

Puede emular el comportamiento del estilo MFC en Android utilizando un Handler para publicar un Ejecutable en la cola de mensajes.

Aquí hay un breve ejemplo

class MyClass
{
    Handler m_myHandler;
    Runnable m_myRunnable;

    MyClass()
    {
        m_myHandler = new Handler();
        m_myRunnable = new RUnnable()
        {
            public void run()
            {
                // do your stuff here
            }
        };
    }

    public void onclickListener(...)
    {
        // push the runnable into the message queue
        m_myHandler.post(m_myRUnnable);
    }
}

Otros consejos

Tienes 2 preguntas aquí.

  1. Cómo enlazar controles. yo suelo Clases internas anónimas por todas partes. Es un poco detallado escribirlo, pero la finalización automática lo hace en un instante.

  2. cómo hacer que la interfaz de usuario responda. La clave es no hacer nada tiempo. consumiendo en el hilo de la interfaz de usuario. Si se Toma más de .1s, hace el trabajo en un hilo de trabajo y notificar a la interfaz de usuario para actualizar cuando la tarea se realiza. los otra cosa es asegurarse de que usted no generes mucha basura ya que el android GC es bastante primitivo en este momento.

Para Button s Generalmente extiendo la clase Button y anulo onTouchEvent()

public boolean onTouchEvent (MotionEvent event) 
{
   if (event.getAction() == MotionEvent.ACTION_DOWN) 
   {
      setPressed(true);
   }
   return super.onTouchEvent(event);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top