Как обработать сенсорное событие, чтобы открыть текстовое представление - PullRequest
0 голосов
/ 16 января 2012

У меня следующий код, и я хочу создать событие, когда я опускаю textView. но мой код генерирует события каждый раз, когда я касаюсь экрана.

final TextView pullDown=(TextView)findViewById(R.id.textView2);

             pullDown.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {


            if (event.getAction() == MotionEvent.ACTION_DOWN){

                first.setBackgroundColor(Color.WHITE);
                pullDown.setHeight(200);
                pullDown.setText("Loading");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }
            else if(event.getAction()==android.view.MotionEvent.ACTION_UP){
                first.setBackgroundColor(Color.BLUE);
                change.setText("OK");
                pullDown.setText("Pull Down to Refresh");
                pullDown.setHeight(70);
            }

                return true;
        }

    });`

1 Ответ

0 голосов
/ 16 января 2012

Я полагаю, что ваше требование: у вас есть кнопка, когда вы нажимаете вниз, она выполняет операцию, требующую затрат времени, и вы хотите, чтобы кнопка показала «Загрузка», когда работа завершена, кнопка показывает «Потяните вниз доrefresh "Снова.

В соответствии с этой ситуацией, вы не можете просто изменить кнопку с помощью setText и Sleep (1000), это сделает ваш экран не отвечающим в течение секунды (потому что он работает в потоке основного пользовательского интерфейса),Таким образом, вы не видите изменения ... Пожалуйста, используйте Thread + Handler или AsyncTask

class BtnAsyncTask extends AsyncTask<String, Integer, String>{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        first.setBackgroundColor(Color.WHITE);
        pullDown.setHeight(200);
        pullDown.setText("Loading");
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        first.setBackgroundColor(Color.BLUE);
        change.setText("OK");
        pullDown.setText("Pull Down to Refresh");
        pullDown.setHeight(70);
    }

}

и создайте новую задачу, нажав кнопку, вызовите:

new BtnAsyncTask().execute();

—————————————— Или, если вы просто хотите изменить внешний вид при нажатии кнопки, используйте нарисованный шаблон

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"
      android:drawable="@drawable/select_drawable" />

<item android:state_window_focused="true" 
      android:state_focused="true"
      android:drawable="@drawable/normal_drawalbe" />

<item android:drawable="@drawable/normal_drawalbe" />

надеюсь, что это поможет вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...