我正在尝试实现一个通过套接字发送数据的虚拟操纵杆。我希望仅在用户按下(触摸)操纵杆时才发送数据。代码一切正常,但我认为操纵杆视图应该更大。为了实现它,我将android:layout_weight
RelativeLayout中的leftSide
从4更改为3.此后,触摸事件的调整从未注册。操纵杆动画虽然运作得很好。还原更改会使程序再次运行。
这里发生了什么?在屏幕上使视图更大的其他方法是什么?
我有以下布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:baselineAligned="false"
tools:context="com.my.package.DisplayControlActivity">
<RelativeLayout
android:id="@+id/leftSide"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" >
<!-- working fine with android:layout_weight="4" -->
<SurfaceView
android:id="@+id/videoStream"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</SurfaceView>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rightSide"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<ImageView
android:id="@+id/testImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:contentDescription="@string/test_image"
android:scaleType="fitStart"
android:src="@drawable/test_image" >
</ImageView>
<com.my.package.SquareJoystickView
android:id="@+id/virtual_joystick"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
</com.my.package.SquareJoystickView>
</RelativeLayout>
这是OnTouchListerer代码的一部分:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* some irrelevant code */
joystickView = (SquareJoystickView) findViewById(R.id.virtual_joystick);
isSending = false;
joystickView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_UP) {
isSending = false;
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isSending = true;
}
return true;
}
});
}