Android 利用随机数进行画图

这是CustomView.java里的

public class CustomView extends View {
    public CustomView(Context context){
      super(context);
    }
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint(); 
        paint.setColor(Color.RED);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeCap(Paint.Cap.ROUND);
        paint.setStrokeWidth(10f);
        paint.setAntiAlias(true);
        canvas.drawLine(X,Y,300,300,paint);
    }
}

这是RandomActivity.java里的

public class RandomActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Random();
    }
    public void Random(){
        int min=100;
        int max=1000;
        Random random=new Random();
        int X=random.nextInt(max)%(max-min+1)+min;
        int Y=random.nextInt(max)%(max-min+1)+min;
        System.out.println(X);
        System.out.println(Y);
    }
}

这是MainActivity.java里的

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout layout = (LinearLayout)findViewById(R.id.wang);
        CustomView view=new CustomView(this);
        layout.addView(view);
    }
}

我的想法是在RandomActivity.java里面生成随机数,在CustomView.java里面利用生成的X,Y作为起点进行画图。最后呈现的效果是一个起点随机 终点确定的线,在这里面应该是需要不断地刷新而后画图。
但是我把在RandomActivity.java里生成的X,Y放进CustomView.java里是错的 可是我已经将X,Y设置成了全局变量 不是应该可以用的吗
谢谢大家指点 刚开始学

你的CustomView要改一下, 不要在onDraw方法里面去new Paint ,这样会导致内存抖动。

public class CustomView extends View {
private Paint paint;
private int x, y;

public CustomView(Context context){
    super(context);
    paint = new Paint();
    paint.setColor(Color.RED);
    paint.setStrokeJoin(Paint.Join.ROUND);
    paint.setStrokeCap(Paint.Cap.ROUND);
    paint.setStrokeWidth(10f);
    paint.setAntiAlias(true);
}

public void setPoint(int x, int y) {
    this.x = x;
    this.y = y;
    invalidate();
}

protected void onDraw(Canvas canvas) {
    canvas.drawLine(x,y,300,300,paint);
}

}

在activity中调用可以采用定时任务结合handler去刷新你的CustomView; 在onDestroy方法移除timer、timeTask、handler避免内存泄漏。
public class TestActivity extends AppCompatActivity {
private TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Message message = Message.obtain();
message.what = 1;
handler.sendMessage(message);
}
};

private Timer timer = new Timer();

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        if (msg.what == 1) {
            ranDom();
        }
    }
};

private CustomView view;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    LinearLayout layout = (LinearLayout) findViewById(R.id.wang);
    view = new CustomView(this);
    layout.addView(view);
    timer.schedule(timerTask, 100, 100);
}

public void ranDom() {
    int min = 100;
    int max = 1000;
    Random random = new Random();
    int X = random.nextInt(max) % (max - min + 1) + min;
    int Y = random.nextInt(max) % (max - min + 1) + min;
    System.out.println(X);
    System.out.println(Y);
    view.setPoint(X, Y);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (handler != null) {
        handler.removeMessages(1);
    }
    if (timer != null) {
        timer.cancel();
        timer = null;
    }
    if (timerTask != null) {
        timerTask.cancel();
        timerTask = null;
    }
}

}

你把RandomActivity不用写成Activity,就是不用继承Activity,使用纯Java的方式。
你这里的问题在于,你的RandomActivity并没有执行。你对Android的基础可能还没掌握,可以通过log或Debug调试的方式一点点去试错,或者学习下Activity的生命周期可能会对你有所帮助。