我有一个自定义视图(DrawFigures),其中有一个onTouch方法来执行一系列操作。有一个布局,其中有几个按钮、一个TextView和一个RelativeView来动态添加自定义视图。然后,在MainActivity.class中,当在此自定义视图中调用onTouch方法时,我需要接收DrawFigures中一些属性的值,以便在TextView组件中显示它们。
这是自定义视图的代码:
我无法在MainActivity的TextView中显示value1,因为它在DrawFigures的onTouch方法中被改变了。如何解决这个问题?是在MainActivity中实现OnTouch方法吗?该怎么做?MainActivity.class看起来像这样:
这是自定义视图的代码:
public abstract class DrawFigures extends View{
private float value1;
public boolean onTouch(Motion Event){
int action = event.getAction();
if(action==MotionEvent.ACTION_MOVE){
// ... methods that provoke that value1 changes
}else if(action==MotionEvent.ACTION_DOWN){
// ...
}else if(action==MotionEvent.ACTION_UP){
// ...
}
}
// ...
return true;
}
我无法在MainActivity的TextView中显示value1,因为它在DrawFigures的onTouch方法中被改变了。如何解决这个问题?是在MainActivity中实现OnTouch方法吗?该怎么做?MainActivity.class看起来像这样:
public class MainActivity extends Activity implements View.OnTouchListener{
DrawFigures fig;
TextView txtInfo;
// ...
public void btnSecRec(View v){
int id = v.getId();
if (id == R.id.btnSecRec){
RelativeLayout parent = (RelativeLayout)findViewById(R.id.viewDatosSec);
parent.removeAllViews();
fig = new DrawRectangleWithDimensions(this);
fig.setOnTouchListener(this);
fig.setFigure(10, 40);
parent.addView(fig);
}
}
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_MOVE) {
if (fig.touching == true) {
String value = Float.toString(fig.getChangingDimensionValue());
txtInfo.setText(value);
}
}
return true;
}
}
DrawFigures
设为MainActivity
的内部类,并将value1
设为全局类成员? - Marcus