2017-07-31 83 views
2

我从Activity类这样的对象:传递活动对象以非活性类的android

CustomPaint customCanvasPaint=(CustomPaint) dialog.findViewById(R.id.customCanvasPaint); 

如何将这个对象传递给类是这样的:

public class CustomPaint extends CanvasView { 
    public CustomPaint(Context context) { 
    super(context); 
    initialize(context); 
    } 

    public CustomPaint(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    initialize(context); 
    } 


    public void initialize(Context context){ 
    LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view=inflater.inflate(R.layout.custom_paint,null); 
    CanvasView canvasView = (CanvasView) view.findViewById(R.id.customCanvasView); 
    canvasView.setPaintStrokeColor(Color.RED); 
    canvasView.setPaintStrokeWidth(12f); 
    } 
} 

我要定制初始化方法中的对象,但绘画颜色和绘制宽度不会更改。 如何做到这一点? 谢谢。

回答

0
public class CustomPaint extends CanvasView { 
CanvasView mCanvasView; 
public CustomPaint(Context context,CanvasView canvasView) { 
    super(context); 
    this.mCanvasView = canvasView; 
    initialize(context); 
    } 

    public CustomPaint(Context context, AttributeSet attrs,CanvasView canvasView) { 
    super(context, attrs); 
    this.mCanvasView = canvasView; 
    initialize(context); 
    } 

public void initialize(Context context){ 

canvasView.setPaintStrokeColor(Color.RED); 
canvasView.setPaintStrokeWidth(12f); 
} 
    } 

和形式的活动

CanvasView canvasPaint=(CanvasView) dialog.findViewById(R.id.canvasPaint); 
CustomPaint mCustomPaint = new CustomPaint(this,canvasPaint); 
+0

对象是不是CanvasView – handerianous

0

你可以在你的子类所需的更改和添加此子到您的.xml布局文件。

CustomPaint canvasPaint=(CustomPaint) dialog.findViewById(R.id.customPaint); 

为了使改变这种观点,你应该重写平局onDraw()方法,任何你想要传递画布上的onDraw()方法。看看这个https://developer.android.com/training/custom-views/custom-drawing.html

0

你可以在你的类创建一个setter方法传递一个对象:

这是你的活动:

@Override 
protected void onCreate(Bundle bundle) { 
    // 

    CustomPaint view = (CustomPaint) findViewById(R.id.customPaint); 
    MyObject object = new MyObject("This is a test object"); 
    view.setData(object); 
    view.postInvalidate(); 
} 

从你的自定义类:从CustomPaint的类

public CustomPaint extends View { 
    private MyObject mData; 

    //... Constructor and others ... 

    public void setData(MyObject data) { 
     mData = data; 
    } 
} 
+0

我想创建一个CustomPaint,同时把所有的代码放在非活动类 – handerianous

相关问题