2017-07-31 80 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

相關問題