質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

7204閲覧

buttonが表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/01/16 15:22

編集2017/01/17 02:27

今の段階ではボタンが表示できていません。
ボタンを表示するには何が足りませんか

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:baselineAligned="false"> <com.example.pc632g.senitest.GLView android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="メモ" android:onClick="buttonClick" /> </RelativeLayout>

GLView.java

import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.opengl.GLSurfaceView; import android.util.AttributeSet; import android.util.Log; class GLView extends GLSurfaceView implements GLSurfaceView.Renderer { /** * TAG */ private static final String TAG = "GLVIEW"; /** * 立方体 */ private Cube mCube; /** * コンストラクタ * * @param context Context */ public GLView(Context context) { super(context); // 描画処理を設定 setRenderer(this); } public GLView(Context context ,AttributeSet set){ super(context, set); } /** * 描画処理のループ */ public void onDrawFrame(GL10 gl) { Log.i(TAG, "onDrawFrame()"); // 画面クリアの色を設定 gl.glClearColor(0, 0, 1, 1.0f); // 画面をクリア gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glEnable(GL10.GL_DEPTH_TEST); // モデルビューモードに設定 gl.glMatrixMode(GL10.GL_MODELVIEW); // マトリクスを初期化 gl.glLoadIdentity(); //マトリクスの移動. //描画メソッドの呼び出し。 //それぞれのクラスに描画メソッドをもっているので、GL10のコンテキストを渡して描画を行います. //mTriangle.draw(gl); mCube.draw(gl); } /** * 画面が変更されたときに呼び出されるメソッド. * 1.画面が生成されたとき(onSurfaceCreatedの後) * 2.画面サイズが変わったとき(縦と横で端末が切り替わったとき) */ public void onSurfaceChanged(GL10 gl, int width, int height) { Log.i(TAG, "onSurfaceChanged()"); // GL_CURLL_FACEをDisableにすることで裏面も表示されます // ここをEnableにすると、x or y軸での回転時に裏面が表示されません. // 主に3Dのように裏面の描画を行わないときにEnableにして使います. //gl.glDisable(GL10.GL_CULL_FACE); gl.glEnable(GL10.GL_CULL_FACE); // 頂点の配列の利用を有効にする gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); //テクスチャバッファの配列の利用を有効にする gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); // ビューポートの設定 gl.glViewport(0, 0, width, height); // マトリクスのモードをプロジェクションモードに設定 gl.glMatrixMode(GL10.GL_PROJECTION); // ローカル座標を初期化 gl.glLoadIdentity(); // 画面比(アスペクト比)を計算 float ratio = (float) width / height; // 透視投影に使う値を計算 float size = 0.01f * (float) Math.tan((70.0f / 180.0f / 3.141592f) / 2.0); // 透視投影の設定 gl.glFrustumf(-size, size, -size / ratio, size / ratio, 0.01f, 100.0f); // 平行投影の設定。投資投影では無い場合、こちらを設定 // gl.glOrthof(-1, 1, -1.0f/ratio, 1.0f/ratio, 0.01f, 100.0f); } /** * GLSurfaceViewのRendererが生成された際に呼ばれる */ public void onSurfaceCreated(GL10 gl, EGLConfig config) { Log.i(TAG, "onSurfaceCreated()"); mCube = new Cube(gl, getResources()); } /** * GLSurfaceViewのRendererが破棄された際に呼ばれる */ protected void onDetachedFromWindow() { super.onDetachedFromWindow(); Log.i(TAG, "onDetachedFromWindow()"); } }

MainActivity.java

import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GLView view = new GLView(this); setContentView(view); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yona

2017/01/16 16:13

1つの質問で完結するように端折らずに必要な情報を追記してください。
guest

回答2

0

ベストアンサー

GLViewが正しくできていると仮定してですが

カスタムviewをactivity_mainに挿入しようとしているのだと思いますが
その場合はこのようにします
idをセット

xml

1// activity_main 2<com.example.pc632g.senitest.GLView 3 android:id="@+id/glview" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" />

MainActivity.java からの呼び出しは

java

1@Override 2protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6// GLView view = new GLView(this); 7// setContentView(view); 8 9 GLView view = (GLView) this.findViewById(R.id.glview); 10} 11

https://akira-watson.com/android/custom-canvas1.html

投稿2017/01/17 04:26

編集2017/01/17 04:27
aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/01/17 06:51 編集

回答ありがとうございます アプリを起動したら問題が発生したため終了します。と出てきました。
aja

2017/01/17 07:10

エラーlogを出してください
退会済みユーザー

退会済みユーザー

2017/01/18 00:11

Session 'app': Error Installing APK こういうエラーが出てました
退会済みユーザー

退会済みユーザー

2017/01/18 00:55

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.pc632g.senitest, PID: 30767 java.lang.NullPointerException at android.opengl.GLSurfaceView.surfaceCreated(GLSurfaceView.java:523) at android.view.SurfaceView.updateWindow(SurfaceView.java:572) at android.view.SurfaceView.access$000(SurfaceView.java:86) at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:175) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:851) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1875) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5692) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) at android.view.Choreographer.doCallbacks(Choreographer.java:574) at android.view.Choreographer.doFrame(Choreographer.java:544) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:212) at android.app.ActivityThread.main(ActivityThread.java:5151) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) at dalvik.system.NativeStart.main(Native Method) こっちでしょうか?
aja

2017/01/18 07:17

OpenGL ES2.0ですが http://qiita.com/shunjiro/items/f3bfca727b76350ee23a これにボタンを置くために レイアウトファイルを使わずにコード記述でやってみると protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GLSurfaceView glSurfaceView = new GLSurfaceView(this); glSurfaceView.setEGLContextClientVersion(2); GLSurfaceRendler renderer = new GLSurfaceRendler(); glSurfaceView.setRenderer(renderer); glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); setContentView(glSurfaceView, lp); // button 追加 Button button = new Button(this); button.setText("Button"); LinearLayout.LayoutParams buttonLayoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); button.setLayoutParams(buttonLayoutParams); addContentView(button, buttonLayoutParams); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("debug","tapped"); } }); } これでいけました 参考まで
guest

0

MainActivityのsetContentView(view);を以下のように変更してみてください

java

1//setContentView(view); 2setContentView(R.layout.activity_main);

投稿2017/01/17 03:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/01/17 06:51

回答ありがとうございます アプリを起動したら問題が発生したため終了します。と出てきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問