サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > GLSurfaceViewの表示位置を整えるサンプル@tryLayout01a
Google Play AAKAKAxSOFTへ

GLSurfaceViewの表示位置を整えるサンプル@tryLayout01a

実行ファイル(APK)やサンプル(zip)をダウンロードする
tryLayout01aの実行イメージ

レイアウトをうまく整えてGLSurfaceViewをいい感じのところにおく

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

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.16"
        android:background="@drawable/bg"
        android:tileMode="repeat" >


        <RelativeLayout
            android:id="@+id/relativeLayout2"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_above="@+id/seekBar1"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >

            <android.opengl.GLSurfaceView
                android:id="@+id/glview1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.16" />
        </RelativeLayout>

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:text="アドセンス入れる場所的なところじゃない?" />

        <SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/button1"
            android:layout_alignParentLeft="true" android:layout_marginBottom="20dp"/>

    </RelativeLayout>

</LinearLayout>
/////////////////////////////////////////////////////////////////////////////
/**
レイアウトをうまく整えてGLSurfaceViewの位置をいい感じのところにする
GLSurfaceViewをデバイスの画面サイズに合わせてリサイズする
GraphicLayoutからmain.xmlにSurfaceViewを追加した後に、ソースの方を開いて
「<SurfaceView」から「<android.opengl.GLSurfaceView」に変更する。

GLSurfaceView
LinearLayout.LayoutParams
setLayoutParams
onWindowFocusChanged

●タイトルバーを消す方法
AndroidManifest.xmlをエディタで開いて
「<Activity」の最後に「android:theme="@android:style/Theme.NoTitleBar"」を追加すると
タイトルバーが消える
*/

package trial.sample.trylayout00a;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.widget.LinearLayout;

/////////////////////////////////////////////////////////////////////////////
public class TryLayout00aActivity extends Activity {
	
	private GLSurfaceView mGlView;
	private boolean mIsInitScreenSize;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // GLViewを取り出す
        this.mGlView = (GLSurfaceView)this.findViewById(R.id.glview1);
        this.mGlView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
        
        // 描画用のクラスを登録する
        this.mGlView.setRenderer(new GLRender());
        this.mIsInitScreenSize = false;
    }

    /** 表示されるときの呼ばれる */
	@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		
		// スクリーンサイズ調整が済んでいない場合は調整する
		if (this.mIsInitScreenSize == false) {
			int width = this.mGlView.getWidth();
			
			// GLSurfaceViewのサイズを変更する
			// ただ、背景色と違う色でGlSurfaceViewがクリアされていると、サイズ変更が丸見えになる
			// 親のレイアウトによってparamsを変更する必要がある
			// RelativeLayout使ってるならRelativeLayout.LayoutParams
			// LinearLayout使ってるならLinearLayout.LayoutParams
			LinearLayout.LayoutParams params = 
			        new LinearLayout.LayoutParams(width, width);
	        this.mGlView.setLayoutParams(params);
		}
		
		super.onWindowFocusChanged(hasFocus);
	}
}



/////////////////////////////////////////////////////////////////////////////
//OpenGlの描画クラス(ただ塗りつぶすだけよ)
class GLRender implements GLSurfaceView.Renderer {

	/** コンストラクタ */
	public GLRender() {
	}

	/** 毎フレーム呼ばれるやつ */
	public void onDrawFrame(GL10 gl) {
		// ビューの塗りつぶし
		gl.glClearColor(1.0f, 0.5f, 0.5f, 1.f);
		// 各バッファのクリア
		gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
	}
	
	/** 描画領域が変更されたときに呼ばれる */
	public void onSurfaceChanged(GL10 gl, int width, int height) {
	// TODO 自動生成されたメソッド・スタブ
	
	}
	
	/** 描画領域が作られ時に呼ばれる */
	public void onSurfaceCreated(GL10 gl, EGLConfig config) {
	// TODO 自動生成されたメソッド・スタブ
	
	}

}
サンプルプロジェクトをダウンロード APKファイルをダウンロード

, ,

一番単純なOpenGLのサンプル#tryOpenGl00a OpenGLでポリゴンにテクスチャを張るサンプル#tsGlTexture

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>