2011-09-14 6 views
1

私は既存のxmlレイアウトを持っていて、このレイアウトを自分のアクティビティクラスにロードしています。今、私はこの上にrectangleを描画したいと思います。クリックすると、新しいインテントが呼び出されます。この矩形を既存のレイアウトに追加するにはどうすればいいですか?アンドロイド既存のレイアウトでグラフィックスを描く方法

public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.chart); 

これはグラフィックスを描画するコードです。これをどのように達成できますか?

drawView = new DrawView(this); 
     drawView.setBackgroundColor(Color.WHITE); 
     setContentView(drawView); 

答えて

2

アクティビティは描画UIとは関係ありません(いずれにせよ、決してこれを直接行うことはありません)。ビュークラスは描画を担当します。

場合によっては、カスタムクラスでButtonクラスを拡張する必要があります。 onMeasure()を上書きして正方形にします。そして背景はあなたがそれを設定する何かになります。


簡単な例:

SquareButton.java:このボタンmain.xmlを使用しています

package com.inazaruk.helloworld; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.Button; 

public class SquareButton extends Button 
{ 
    public SquareButton(Context ctx) 
    { 
     super(ctx); 
    } 

    public SquareButton(Context ctx, AttributeSet attrs) 
    { 
     super(ctx, attrs); 
    } 

    public SquareButton(Context ctx, AttributeSet attrs, int defStyle) 
    { 
     super(ctx, attrs); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
    { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec);   

     /* currently view is rectangle, so we get the shorter size 
     * and make it square. */ 

     int width = getMeasuredWidth(); 
     int height = getMeasuredHeight(); 

     width = height =(int) (Math.min(width, height));   

     super.onMeasure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), 
         MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); 
    } 
} 

レイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:a="http://schemas.android.com/apk/res/android" 
    a:orientation="vertical" 
    a:layout_width="fill_parent" 
    a:layout_height="fill_parent" 
    a:gravity="center" 
    a:weightSum="1"> 

    <com.inazaruk.helloworld.SquareButton 
     a:id="@+id/button" 
     a:layout_height="0dp" 
     a:layout_weight="0.5"   
     a:layout_width="fill_parent"   
     a:background="#ffffffff" 
     a:text="foo" 
     a:gravity="center" 
     /> 

</LinearLayout> 

結果のスクリーンショット:
enter image description here

関連する問題