読者です 読者をやめる 読者になる 読者になる

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

カスタムビューがXMLから読み込まれない 続き

前のエントリ

カスタムビューがXMLから読み込まれない
http://d.hatena.ne.jp/verytired/20100122/1264144105


結局うまく出来ないのでXMLを読み込むことは諦めた・・・。回避策としてレイアウトを作ってそこにインスタンスを入れる形にしてみた。


Activity

public class layoutTest extends Activity {
    
	/** Called when the activity is first created. */
	private final int WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT; 
	private final int FILL_PARENT = ViewGroup.LayoutParams.FILL_PARENT; 
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(linearLayout);
   
        testView tv1 = new testView(getApplication());
        linearLayout.addView(tv1, new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
        
    }
}


View

public class testView extends SurfaceView {

	public testView( Context context) {
		super( context);
		setFocusable(true); // make sure we get key events
	}
	
	public boolean onKeyDown(int keyCode, KeyEvent msg){
		System.out.println("DOWN keycode:" + keyCode);
		return true;
		
	}

	public boolean onKeyUp(int keyCode, KeyEvent msg){
		System.out.println("UP keycode:" + keyCode);
		return true;
	}

    }
}


これでViewが作られてキー入力が拾えるようになった。他の表示はViewの中で処理を書けばいいかな。


でもイマイチ腑に落ちない・・・。サンプルのLunarLanderは動いているのに、自分で簡単に実装しようとするとうまく出来ないのでその原因が知りたい。この辺りの描画の仕組みや実装の仕方やコツについて細かく書いているものはないものか。


描画処理はやっぱりFlashに歩があることを実感しつつ、もう少し掘り下げてみる。もう少し詳しくなれたらNexus買うぞ。