2012-08-03 19 views
1

我正在嘗試創建一個Android應用程序,用戶可以將任何圓圈拖過另一個圓圈,文本框應顯示這兩個圓圈的總和。每次程序啓動時,它應該顯示從1到9的隨機位置和隨機數的圓圈。Android中可拖動的圓圈內的文本

不幸的是,我不是靠近那個目標的地方,我創建了一個圓圈,但是當我嘗試拖動它時,應用程序崩潰。請同時幫助我完成應用程序的其他功能。謝謝。

最終的輸出應該是這個樣子: enter image description here

MainActivity.java

package com.dragandadd; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.FrameLayout; 

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FrameLayout main = (FrameLayout) findViewById(R.id.activity_main); 
     main.addView(new Ball(this,50,50,25)); 

     main.addView(new Ball(this,50,50,25)); 

     main.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent e) { 
       float x = e.getX(); 
      float y = e.getY(); 
       FrameLayout flView = (FrameLayout) v; 
      flView.addView(new Ball(getParent(), x,y,25)); 
      return true; 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

Ball.java

package com.dragandadd; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.view.View; 

public class Ball extends View { 
    final float x; 
    final float y; 
    final int r; 
    final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 

    public Ball(Context context, float x, float y, int r) { 
     super(context); 
     mPaint.setColor(0xFFFF0000); 
     this.x = x; 
     this.y = y; 
     this.r = r; 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawCircle(x, y, r, mPaint); 
    } 
} 

activity_main

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/activity_main" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FF66FF33" /> 

回答

0

我認爲你需要爲你Ball類的第二個構造函數。

public ResistorView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 

看看是否有幫助。我也會使用RelativeLayout。關於運動部分,我認爲這不是正確的做法。嘗試覆蓋Ball類中的onToch

0

檢查this樣品。通過本教程,您可以拖放視圖,我認爲您可以使用TextView和Circle構建自己的自定義視圖並將其拖到屏幕上。