Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何处理触摸事件以下拉文本视图_Android_Events - Fatal编程技术网

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

Android 如何处理触摸事件以下拉文本视图,android,events,Android,Events,我有以下代码,我想在下拉textView时生成事件。 但我的代码每次触摸屏幕时都会生成事件 final TextView pullDown=(TextView)findViewById(R.id.textView2); pullDown.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent

我有以下代码,我想在下拉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;
        }

    });`

我想你的要求是:你有一个按钮,当你点击下,它做一个时间成本计算的操作,你希望按钮显示“加载”,当工作完成后,按钮显示“下拉刷新”

根据这种情况,您不能简单地通过setText和Sleep(1000)来更改按钮,这将使您的屏幕在第二个过程中不可响应(因为它在主UI线程中运行)。所以你看不到变化。。。请尝试使用线程+处理程序或异步任务

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);
    }

}
-------------- 或者,当你想在点击按钮时改变一下外观,使用一个可绘制的sytle

<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" />


希望它能帮助你:)

你说的“下拉”是什么意思?你的意思是拖动文本视图吗?下拉到底是什么意思?你想动态改变文本视图的位置吗?这就像拖动文本视图一样。当我点击文本视图时,我想将文本视图和应用程序中的其他内容的位置改为下方。我想你不明白我的问题,我会给你举个例子。。在android mobile中,当我们打开菜单,触摸屏幕并向下拖动时,感觉所有元素都在向下移动。。当我触摸文本视图并向下拖动页面上的所有元素时,我希望这样做。我看到了。也许你可以尝试动画或者制作一个自定义视图,你所做的会阻塞UI线程,所以你看不到任何变化。
<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" />