当前位置:操作系统 > 安卓/Android >>

【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!

 

各位童鞋请你们注意:surfaceview中确实有onDraw这个方法,但是surfaceview不会自己去调用!!!

而我代码中的ondraw 也好draw 也好,都是我自己定义的一个方法。。。放在线程中不断调用的,一定要注意!!

     昨天圣诞节,没有出去,而是一天时间全部纠结在如何在SurfaceView中添加组件,例如添加常用的Button,TextView等等、一开始也想着从网上找些资料看看有没有可参考的,但是发现搜到的结果仍是些童鞋对此很疑惑并且也在找寻答案,那么,这里就把圣诞节一天的成果来和各位童鞋分享;

    1.因为我们的SurfaceView是个View对于添加的组件其实也是View,如果我们只是一味的想在SurfaceView中添加View组件其实是错误的思想,当然我一开始也是想着直接在SurfaceView中定义或者去使用组件,但是结果肯定是不成功的,因为View不能添加View!

    2.既然第一条肯定是错误的,那么我们就应该想到把我们的SurfaceView和组件都放在一个Layout里面,毕竟我们的的SurfaceView也是一个view和其他组件一同放在我们的layout里,那么这样一来肯定就能完成在SurfaceView中添加组件的目的啦。下面先上截图

\

 

    大家看到中间白色区域就是我们的SurfaceView啦,最上方是组件TextView ,最下方是Button 、对的,要的就是这个效果!而不是像前面文章中多个Activity切换,这样都在一个界面中啦。哇哈哈啊。好、下面来看代码吧:

 先放上Xml 代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

   <LinearLayout

            android:orientation="horizontal"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center">

             

    <TextView  

            android:id="@+id/textview"

            android:layout_width="fill_parent"

            android:layout_height="fill_parent"

            android:text="This is Himi"

            android:textSize="32sp"  

            android:textColor="#00FF00"

            android:gravity="center_horizontal"/>  

          

    </LinearLayout>

       

    <FrameLayout

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:layout_weight="1" >

    <com.himi.MySurfaceView android:id="@+id/view3d"

            android:layout_width="fill_parent"

            android:layout_height="fill_parent"/>                 

    </FrameLayout>    

    

    <LinearLayout

            android:orientation="horizontal"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center">

        <Button

        

         android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="Himi Button_1"

                 android:id="@+id/button1"/>

     

        <Button android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="Himi Button_2"

                  android:id="@+id/button2"/>

     </LinearLayout>

</LinearLayout>

    以上代码很简单,都是一些布局方式和各个组件一些属性及显示方式的设定,当然主要看如何对我们的SurfaceView如何注册在xml中的,那么每个组件都有id这样为了对后面其交互数据用到,因为我们要对每个组件操作,所以这里都索引了id方面从R文件中取出其对象。

     那么,xml我们定义好了,看看代码中如何实现的,这里先说下Activity类中代码:

package com.himi; 

import android.app.Activity; 

import android.os.Bundle; 

import android.view.View; 

import android.view.Window; 

import android.view.WindowManager; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener { 

    /** Called when the activity is first created. */ 

    private Button button1, button2; 

    private TextView tv ; 

    @Override 

    public void onCreate(Bundle savedInstanceState) { 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,