0

私が達成したかったのはこれです:

ここに画像の説明を入力

画面の特定の部分を自分のSurfaceView. これSurfaceViewをいくつかのアニメーションに使用します。しかし、私は私の横にいくつかのようなものを含めたいと思っていましViewsた.TextViewRadioButtonGroupSurfaceView

だから私の質問は、これは可能ですか?TextViews「スプライトのアニメーション化」に関する Android のサンプル ソース コードを探していますが、 と の両方を組み込んだアクティビティは見つかりませんでしたSurfaceView。すべて伸びていSurfaceViewます。これが可能な場合、どうすればよいですか? 試すことができるサンプル ソース コードはありますか?

4

2 に答える 2

0

それは間違いなく可能ですが、もう少し情報を提示する必要があるかもしれません. テキストビューの横で簡単なアニメーションを実行したい場合は、サーフェスビューも必要ありません。イメージビューを作成し、その上でアニメーションを実行するだけです(これは、まさにこのトピックのために作成したチュートリアルです)

TextView とその類は、View クラスから派生した Surfaceview から派生していません。繰り返しますが、単純なアニメーションを実行したい場合は、サーフェス ビューは必要ないと思います。より動的で複雑なことをしたい場合は、私の開発ブログに、ゲームに SurfaceView を利用する方法に関するチュートリアルもあります。それがより好みの場合は、カスタム サーフェス ビューを作成し、それを必要なサイズの寸法でレイアウトに結び付けることができます。

于 2012-05-09T04:47:55.010 に答える
0

これを試してください私はサーフェスビューを拡張していません。

    public class Preview_can_work extends Activity {
        private SurfaceView surface_view;  
        SurfaceHolder.Callback sh_ob = null;
        SurfaceHolder surface_holder        = null;
        SurfaceHolder.Callback sh_callback  = null;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            getWindow().setFormat(PixelFormat.TRANSLUCENT);

            surface_view = new SurfaceView(getApplicationContext());
            addContentView(surface_view, new LayoutParams(50, 50));

            if (surface_holder == null) {
                surface_holder = surface_view.getHolder();
            }

            sh_callback = my_callback();  // CREATING CALLBACK FOR YOUR SURFACE.
            surface_holder.addCallback(sh_callback);
        }

        // THIS FUNCTION RETURNS CALLBACK OBJECT FOR SURFACEVIEW.
            SurfaceHolder.Callback my_callback() {      
                SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {

                    @Override
                    public void surfaceDestroyed(SurfaceHolder holder) {
                    }

                    @Override
                    public void surfaceCreated(SurfaceHolder holder) {
                    }

                    @Override
                    public void surfaceChanged(SurfaceHolder holder, int format, int width,
                            int height) {
                    }
                };
                return ob1;
        }

    }

これで、レイアウトにテキストビューまたはボタンを追加するだけで機能するはずです。

注:- サーフェスを動的に作成しています。あなたの場合、あなたができることは、xmlファイルですべてを作成できることです。surfaceview を作成する代わりに、video ビューを作成します。

SurfaceView surface_view = (SurfaceView) findViewById(R.id.video_view_id);

レイアウトから ID でビューをフェッチする場合は、コードからいくつかの行を削除する必要があります。それは:

            surface_view = new SurfaceView(getApplicationContext());
            addContentView(surface_view, new LayoutParams(50, 50));

それがあなたを助けることを願っています...

于 2012-05-09T04:50:02.600 に答える