Android 如何处理触摸事件以下拉文本视图
我有以下代码,我想在下拉textView时生成事件。 但我的代码每次触摸屏幕时都会生成事件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
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" />