Java Android自定义视图ondraw变量

Java Android自定义视图ondraw变量,java,android,variables,ondraw,custom-view,Java,Android,Variables,Ondraw,Custom View,我有一个customview,其中显示两个矩形。我想通过从mainactivity发送的变量设置高度 我的customview类如下所示 package com.example.customview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.At

我有一个customview,其中显示两个矩形。我想通过从mainactivity发送的变量设置高度

我的customview类如下所示

package com.example.customview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {
    Paint paint;
    Paint paint2;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint();
        paint2 = new Paint();
    }

    @Override
    protected void onDraw(Canvas canvas) {

        paint.setColor(Color.RED);
        paint2.setColor(Color.DKGRAY);
        canvas.drawRect(150, 0, 200, 100, paint);
        canvas.drawRect(200, 0, 250, 150, paint2);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(400, 300); 
    }

}
主类是标准类

package com.example.customview;


import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
如何从oncreate或onstart更改高度


谢谢大家的帮助。

您需要从主活动发送数据并从MyView接收数据。当您从main use创建打开新活动的意图时

_YourIntent_.putExtra(_tag_,_yourData_);
startActivityForResult(_YourIntent_, result);

//put extra is simply for sending data, and to receive it the other hand , oncreate use this;

Intent x = getIntent();``
//now get the data
int _yourvariable_ = x.getExtras().getString(_tag_).toint;

您需要创建一个变量并从“活动”中进行设置。例如:

private int mHeight = 0;

 @Override
protected void onDraw(Canvas canvas) {

    paint.setColor(Color.RED);
    paint2.setColor(Color.DKGRAY);
    canvas.drawRect(150, 0, 200, 150 + mHeight, paint);
    canvas.drawRect(200, 0, 250, 200 + mHeight, paint2);
}

public void setRectHeight(final int height) {
    mHeight = height;
    invalidate();
}
并在活动中设置高度:

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

    MyView view = (MyView)findViewById(R.id.my_view);
    view.setHeight(50);
}