- Why moving of GroupView works bad?
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:id="@+id/stator"
- >
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_marginLeft="0dp"
- android:layout_marginTop="0dp"
- android:id="@+id/mover"
- android:background="@android:color/darker_gray"
- >
- </RelativeLayout>
- </RelativeLayout>
- public class SymbolPadActivity extends Activity {
- private RelativeLayout mover;
- private RelativeLayout stator;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mover = (RelativeLayout) findViewById(R.id.mover);
- RelativeLayout.LayoutParams labelParams;
- TextView textView;
- for(int leftMargin = 0; leftMargin<1500; leftMargin += 200) {
- for(int topMargin=0; topMargin<800; topMargin += 80) {
- // I can't omit these 3 lines
- labelParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- labelParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
- labelParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
- labelParams.leftMargin = leftMargin;
- labelParams.topMargin = topMargin;
- textView = new TextView(this);
- textView.setText("(" + leftMargin + "," + topMargin + ")");
- mover.addView(textView, labelParams);
- }
- }
- stator = (RelativeLayout) findViewById(R.id.stator);
- stator.setOnTouchListener(new View.OnTouchListener() {
- private int startleft, starttop;
- private float startx, starty;
- private boolean started;
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if( event.getActionMasked() == MotionEvent.ACTION_DOWN ) {
- started = true;
- startx = event.getX();
- starty = event.getY();
- startleft = mover.getLeft();
- starttop = mover.getTop();
- return true;
- }
- else if( event.getActionMasked() == MotionEvent.ACTION_UP ) {
- started = false;
- startx = starty = 0;
- return true;
- }
- else if( event.getActionMasked() == MotionEvent.ACTION_MOVE ) {
- mover.setLeft( startleft + (int)(event.getX() - startx) );
- mover.setTop( starttop + (int)(event.getY() - starty) );
- return true;
- }
- else {
- return false;
- }
- }
- });
- }
- }