如何处理触摸事件以下拉文本视图

时间:2012-01-16 07:57:37

标签: android events

我有以下代码,我想在下拉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 :(得分:0)

我认为你的要求是:你有一个按钮,当你点击它时,它会进行时间成本计算操作,你希望按钮显示“正在加载”,当工作完成时,按钮显示“下拉到刷新“再次。

根据这种情况,您不能简单地通过setText和Sleep(1000)更改按钮,这将使您的屏幕在第二个期间无响应(因为它在主UI线程中运行)。所以你看不到变化...... Plz尝试使用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" />

希望它可以帮助你:)