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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

1740閲覧

Viewクラスでは、FragmentでnewしてCostractorを呼び出しているのですが、surfaceCreatedなどは呼びだされません。

giant

総合スコア132

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2017/09/20 08:50

編集2017/09/20 10:07

surfaceViewのクラスです

java

1import static android.content.ContentValues.TAG; 2public class AnimationSurfaceView extends SurfaceView implements Runnable,SurfaceHolder.Callback{ 3 4 5 Canvas canvas = null; 6 7 SurfaceHolder surfaceHolder; 8 Thread thread; 9 int screen_width, screen_height; 10 11 public AnimationSurfaceView(Activity context) { 12 super(context); 13 14 Log.e(TAG,"AnimationSurfaceViewのコンストラクタが呼ばれた-"); 15 surfaceHolder = getHolder(); 16 surfaceHolder.addCallback(this); 17 surfaceHolder.setFormat(PixelFormat.TRANSLUCENT); 18 //setZOrderOnTop(true); 19 } 20 21 public AnimationSurfaceView(Context context, AttributeSet attrs) { 22 this(context, attrs, 0); 23 } 24 25 public AnimationSurfaceView(Context context, AttributeSet attrs, int defStyle) { 26 super(context, attrs, defStyle); 27 } 28 29 30 @Override 31 public void surfaceCreated(SurfaceHolder holder) { 32 thread = new Thread(this); 33 thread.start(); 34 Log.e(TAG,"surfaceCreated()"); 35 } 36 37 @Override 38 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 39 screen_width = width; 40 screen_height = height; 41 Log.e(TAG,"surfaceChanged"); 42 } 43 44 @Override 45 public void surfaceDestroyed(SurfaceHolder holder) { 46 thread = null; 47 Log.e(TAG,"surfaceDestroyed"); 48 } 49 50 @Override 51 public void run() { 52 Log.e(TAG,"runに入った"); 53 Paint paint = new Paint(); 54 Paint bgPaint = new Paint(); 55 // Background 56 bgPaint.setStyle(Paint.Style.FILL); 57 bgPaint.setColor(Color.WHITE); 58 59 try{ 60 canvas = surfaceHolder.lockCanvas(); 61 if(canvas!=null){ 62 Log.e(TAG,"canvasはnullじゃなかった"); 63 64 FaceLine faceLine=new FaceLine(); 65 Rect r=faceLine.getR(); 66 if(r!=null) { 67 Log.e(TAG, "Rect rがnullじゃない"); 68 } 69 drawFace(r); 70 }else if(canvas==null){ 71 Log.e(TAG,"canvasはnullだった"); 72 } 73 } 74 catch(Exception e){} 75 } 76 77 public void drawFace(Rect r) { 78 79 int color=Color.argb(255, 255, 0, 255); 80 Paint paint = new Paint(); 81 Log.e(TAG, "drawFaceが呼ばれた"); 82 try { 83 84 if (canvas != null) { 85 try { 86 Log.e(TAG, "canvasがnullじゃなかった"); 87 canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 88 paint.setColor(color); 89 canvas.drawRect(r,paint); 90 91 } finally { 92 surfaceHolder.unlockCanvasAndPost(canvas); 93 } 94 } 95 } catch (IllegalArgumentException e) { 96 Log.w(TAG, e.toString()); 97 } 98 } 99}

Fragmentのクラスです。

java

1 2 @Override 3 public View onCreateView(LayoutInflater inflater, ViewGroup container, 4 Bundle savedInstanceState) { 5 return inflater.inflate(R.layout.fragment_camera2_basic, container, false); 6 } 7 8 @Override 9 public void onViewCreated(final View view, Bundle savedInstanceState) { 10 mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture); 11 12 if(mTextureView==null){ 13 Log.e(TAG,"mTextureVieがnull"); 14 } 15 Log.e(TAG,"mSurfaceViewに値をセットした"); 16 mSurfaceView = (AnimationSurfaceView) view.findViewById(R.id.surface); 17 Log.e(TAG,"mSurfaceViewに値をセットした"); 18 mSurfaceView.setZOrderOnTop(true); 19 mSurfaceView = new AnimationSurfaceView(getActivity()); 20 if(mSurfaceView==null){ 21 Log.e(TAG,"mSurfaceViewがnull"); 22 } 23 }

xml

1<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent"> 4 5 6 <com.example.android.camera2basic.AutoFitTextureView 7 android:id="@+id/texture" 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" 10 android:layout_alignParentStart="true" 11 android:layout_alignParentTop="true" /> 12 13 14 <com.example.android.camera2basic.AnimationSurfaceView 15 android:id="@+id/surface" 16 android:layout_width="match_parent" 17 android:layout_height="match_parent" 18 19 /> 20 21</FrameLayout>

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

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

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

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

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

yona

2017/09/20 09:13

このクラスを使用している箇所を質問に追記してください。
giant

2017/09/20 09:22

追記しました。よろしくお願いします。
guest

回答1

0

ベストアンサー

インスタンス化したAnimationSurfaceViewを画面に追加していないからだと考えられます。

投稿2017/09/20 10:12

yona

総合スコア18155

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

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

giant

2017/09/20 11:09

ありがとうございます。 private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; FrameLayout frameLayout =(FrameLayout)view.findViewById(R.id.framelayout); frameLayout.addView(mSurfaceView, 0, new FrameLayout.LayoutParams(WC, WC)); これで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問