這是我以前的question的後續,其中@pskink建議我實現自定義ViewGroup,它將繪製我需要的東西。我成功地使用硬編碼值的原型。我想把它移到更高層次,我可以從Activity傳遞初始化參數。我需要傳遞一個資源ID並打開要用於onPaint方法的圖像。從活動傳遞資源ID以初始化自定義ViewGroup
這是活動。我可以在那裏獲得ViewGroup實例,但它已經實例化,因此在其構造函數中傳遞資源ID沒有任何意義。我試圖使用setter,但我需要一個Context來從資源初始化Drawable。
protected void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.activity_puzzle);
hiddenPicture = (TileGroupLayout) findViewById(R.id.hidddenPictureArea);
hiddenPicture.setPictureResource(R.drawable.pic_cute_girl);
ViewGroup的setter沒有像構造函數那樣的上下文。
public void setPictureResource(int resourceId) {
int pictureResource = resourceId;
mCustomImage = context.getResources().getDrawable(R.drawable.pic_cute_girl);
pictureRect = mCustomImage.getBounds();
}
如何從這個問題得到?我需要在繪製ViewGroup之前傳遞初始化參數。活動有很多onXY()方法可以覆蓋,但沒有類似的ViewGroup方法。它的生命週期是什麼?
k0sh是對的:你可以使用'View#getContext' – pskink
我的方法是對的嗎?使用ViewGroup的setter從Activity的onCreate傳遞參數,然後覆蓋onDraw? –
是的,爲什麼不呢? – pskink