我将OnTouchListener
在您的应用程序上实现,然后在onTouch
方法上实现,继续检查触摸事件的当前位置是否在视图边界框的范围内。如果是,则应用新背景,如果不是,则应用原始背景。
由于所有视图都实现了setBackgroundColor
我没有进行任何转换,TextView
但示例应该足够了,至少作为进一步开发应用程序的起点。
完整的代码如下:
public class Main extends Activity implements OnTouchListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Set the listener for the parent/container view
findViewById(R.id.cont).setOnTouchListener(this);
//Get a hold of the view and create the Rect for the bounds
View target = findViewById(R.id.target);
Rect b = new Rect();
//Get the bounding box of the target view into `b`
target.getGlobalVisibleRect(b);
}
public boolean onTouch(View v, MotionEvent event) {
//Check if it's within the bounds or not
if(b.contains((int)event.getRawX(),(int) event.getRawY())){
target.setBackgroundColor(0xffff0000);
}else{
target.setBackgroundColor(0xff000000);
}
//You need to return true to keep on checking the event
return true;
}
}
至于前面代码的用户界面,它只是一个带有 ID 的线性布局和一个带有 IDcont
的视图(TextView
在您的情况下为 a )target
。其余的完全是默认的,所以我把它贴在这里没有意义。请注意,我只在模拟器和ymmv上测试了它,但在真实设备上尝试它时,但据我所知,它应该没问题。
相关文件: