Android customview ondraw变量
Android customview ondraw variable
我有一个显示两个矩形的自定义视图。我想通过从 mainactivity 发送的变量来设置高度。
我的自定义视图 class 如下。
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);
}
}
而主要的class是标准的
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 更改高度。
感谢大家的帮助。
您需要从 main activity 发送数据并从 MyView 接收数据。当您创建从主要用途
打开新 activity 的意图时
_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;
您需要创建一个变量并从 Activity 设置它。例如:
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();
}
并在 activity 中设置高度:
@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);
}
我有一个显示两个矩形的自定义视图。我想通过从 mainactivity 发送的变量来设置高度。
我的自定义视图 class 如下。
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);
}
}
而主要的class是标准的
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 更改高度。
感谢大家的帮助。
您需要从 main activity 发送数据并从 MyView 接收数据。当您创建从主要用途
打开新 activity 的意图时_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;
您需要创建一个变量并从 Activity 设置它。例如:
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();
}
并在 activity 中设置高度:
@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);
}