楼主: 熊猫儿

[转载] 【Android开发网上的一些重要知识点[经验分享]。。】

[复制链接]
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
111#
 楼主| 发表于 2013-2-2 18:11 | 只看该作者
这里canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。这里稍微解释一下,

当我们对画布进行旋转,缩放,平移等操作的时候其实我们是想对特定的元素进行操作,比如图片,一个矩形等,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响

对于 canvas.save();和canvas.restore();  还有不少童鞋不懂,OK、我再补充点:

代码段1:
public void draw() {
  Canvas canvas = sfh.lockCanvas();
  canvas.drawColor(Color.BLACK);
  canvas.drawBitmap(bmp1, 0,0,paint);
  canvas.save();
  canvas.scale(1.5f, 1.5f);
  canvas.restore();
  canvas.drawBitmap(bmp2, 0,0,paint);
  sfh.unlockCanvasAndPost(canvas);
}
代码段2:

public void draw() {
  Canvas canvas = sfh.lockCanvas();
  canvas.drawColor(Color.BLACK);
  canvas.drawBitmap(bmp1, 0,0,paint);
  canvas.scale(1.5f, 1.5f);
  canvas.drawBitmap(bmp2, 0,0,paint);
  sfh.unlockCanvasAndPost(canvas);
}
上面这两个代码片段中我们都假设有两张图片 bmp1和bmp2,并且都画在画布上!

那么代码段1和代码段2的不同:

代码段1中我们进行画布缩放的之前保存了画布状态,做了缩放操作之后又取出之前保存的状态,这样做是为了保证bmp2正常画出来不受到缩放的影响!

代码段2里,画了bmp1后就执行了缩放操作,并且没有保存状态!紧接着画了bmp2,那么bmp2也会一样受到缩放的影响!!

所以我们如果单独处理一张图片的时候,而且不想影响其他部分的绘制,那么应该如下来做:

public void draw() {
    Canvas canvas = sfh.lockCanvas();
    canvas.drawColor(Color.BLACK);
    canvas.drawBitmap(bmp1, 0,0,paint);
    canvas.save();
    canvas.scale(1.5f, 1.5f);
    canvas.drawBitmap(bmp2, 0,0,paint);
    canvas.restore();
    sfh.unlockCanvasAndPost(canvas);
  }
          本章源码下载: ”Himi-Android游戏框架源码.rar”      下载地址:  http://vdisk.weibo.com/s/hq1dQ

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
112#
 楼主| 发表于 2013-2-3 10:49 | 只看该作者
【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
(2013-01-23 09:38:49)
转载▼
标签:
android
学习笔记
游戏
it
分类: Android游戏开发学习笔记

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/301.html
今天讲下在Surfaceview中如何实现两个或者多个Activity之间的切换与数据交互,为了更形象一些我做了一个游戏登录界面的demo,其中对于输入界面的布局这些我也是随意写了下,主要是实现功能并没有花时间去美化,所以大家可以自己去xml或者代码中去改变布局,每个小组件的宽高等。好了,下面先上图(本人超爱~哆啦A梦,所以少不了用哆啦A梦的图了,娃哈哈)







由于代码中一共写了三个类,这里不再全部贴出来,不方便;大家可以在文章的末尾去下载源码;

两个activity之间切换我概括的分为两步:

1. 代码实现切换操作。2.配置中声明另外一个acitivity!

我们先看第一步:这里是触屏处理中的一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public boolean onTouchEvent(MotionEvent event) {
    float pointx = event.getX();
    float pointy = event.getY();
    if (pointx > bp_x + 14 && pointx < bp_x + 14 + 117) {
        if (pointy > bp_y + 43 && pointy < bp_y + 43 + 15) {
            // 帐号
            Intent i = new Intent();// 得到一个意图的实例
            i.putExtra("count", 1);// 写出数据
            i.putExtra("himi", str_zh);
            i.setClass(MainActivity.instance, Register.class);// 设置当前activity以及将要操作的类
            MainActivity.instance.startActivity(i);// 用当前activity来启动另外一个activity
        }
    }
}

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
113#
 楼主| 发表于 2013-2-3 10:49 | 只看该作者
显示定义一个intent 对象,Intent 这个类的机制是协助交互的,详细的说明这里不多讲;

Intent 中的putExtra()函数是起到两个activity之间交互交互的,这个方法类似 hashtable 或者hashmap中的put是一样的,第一个参数是key(索引),后一个参数volue(值),根据key我们可以得到对应的volue了。那么后面我也附上接受的处理。

Intent 中的setClass()函数也是传入两个参数,第一个是传入当前实例的activity对象,后面一个参数指需要打开的activity这个类!然后我们就可以利用当前activity对象来启动另外一个activity了。然后我们看下在另外一个activity是如何创建并且怎么接受数据的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.himi;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Register extends Activity {
    private Button button_ok;
    private EditText et;
    private TextView tv;
    private LinearLayout ly;
    private Register rs;
    private byte count;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        rs = this;
        ly = new LinearLayout(this);
        button_ok = new Button(this);
        button_ok.setWidth(100);
        button_ok.setText("确定");
        button_ok.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if (count == 1) {
                    MySurfaceView.str_zh = et.getText().toString();
                } else if (count == 2) {
                    MySurfaceView.str_pass = et.getText().toString();
                }
                rs.finish();
            }
        });
        Intent intent = this.getIntent();
        count = (byte) intent.getIntExtra("count", 0);
        String temp_str = "";
        String temp_str2 = "";
        et = new EditText(this);
        tv = new TextView(this);
        if (count != 3) {
            temp_str = intent.getStringExtra("himi");
            if (count == 1) {
                rs.setTitle("请输入帐号!");
            } else {
                rs.setTitle("请输入密码!");
            }
            ly.addView(tv);
            ly.addView(et);
            ly.addView(button_ok);
            if (temp_str != null) {
                et.setText(temp_str);
            }
        } else {
            temp_str = intent.getStringExtra("himi_zh");
            temp_str2 = intent.getStringExtra("himi_pass");
            rs.setTitle("您输入的信息:");
            tv.setText("帐号:" + temp_str + "/n" + "密码" + temp_str2);
            ly.addView(tv);
            ly.addView(button_ok);
            if (temp_str != null) {
                et.setText(temp_str);
            }
        }
        setContentView(ly);
    }
}

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
114#
 楼主| 发表于 2013-2-3 10:49 | 只看该作者
}
以上代码可以看出,新建一个activity其实只需要继承Activity以及重写onCreate()方法即可。当然创建的还需要一步很重要的步骤,那么在第二步中会详细说明,这里我们看下是如何接受之前的activity传来数据的、。

Intent intent = this.getIntent();

count = (byte) intent.getIntExtra(“count”, 0);

接受也是很简明易懂,创建一个Intent 意图对象,调用来去getIntExtra函数得到之前传来的数据,根据key!当然还有getStringExtra()等等函数都是类似,只是根据你传入的数据不同选择不同函数罢了。童鞋们应该注意的是getIntExtra中第二个参数是什么意思,其实就是一个对于找不到key相匹配的时候会默认return 0 ;

那么下面介绍第二步:在配置中声明

当创建一个activity的时候我们必须去在AndroidMainFeset.xml中去生命我们创建的这个类是个Activity!下面附上xml中的code!

1
2
3
4
5

            android:screenOrientation="landscape" android:configChanges="keyboardHidden|orientation">
      
        
      
此符号是注释

这里我们有两个声明方法,用注释隔开了,上面一个声明中还设定了一些属性,theme显示的形式,等等,其实最简单的声明也是可以的就像注释下面那一句声明就足以起到作用了。

当有新的activity的时候一定要去声明;千万不要忘记这一步。

备注:配置中有一属性 -> android:screenOrientation 这是设置横屏,所以竖屏中点击会有问题,如果想竖屏显示正常那么可以自行删除xml中的  android:screenOrientation=”landscape”     就可以了。

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
115#
 楼主| 发表于 2013-2-3 10:49 | 只看该作者
Android游戏开发之六】在SurfaceView中添加系统控件,并且相互交互数据!
(2013-01-28 14:03:11)
转载▼
标签:
学习笔记
游戏
android
it
分类: Android游戏开发学习笔记


转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/306.html

          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!


———————————————————————

『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块;请点击下面联系进入阅读:

【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!』

——————————————————————-

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

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

2.既然第一条肯定是错误的,那么我们就应该想到把我们的SurfaceView和组件都放在一个Layout里面,毕竟我们的的SurfaceView也是一个view和其他组件一同放在我们的layout里,那么这样一来肯定就能完成在SurfaceView中添加组件的目的啦。下面先上截图、
大家看到中间白色区域就是我们的SurfaceView啦,最上方是组件TextView ,最下方是Button 、对的,要的就是这个效果!而不是像前面文章中多个Activity切换,这样都在一个界面中啦。哇哈哈啊。好、下面来看代码吧:

先放上Xml 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    androidrientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
   <LinearLayout
            androidrientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center">  

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
116#
 楼主| 发表于 2013-2-3 10:49 | 只看该作者
<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
            androidrientation="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类中代码:

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
117#
 楼主| 发表于 2013-2-3 10:50 | 只看该作者
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 {
   
    private Button button1, button2;
    private TextView tv ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐去标题(应用的名字)
        //此设定必须要写在setContentView之前,否则会有异常)
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main); //要先显示,然后再对其组件取出、处理操作
        tv=(TextView)findViewById(R.id.textview);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(this);//这里是监听按键,因为本类使用了OnClickListener接口
        button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(this);
      
    }
    @Override
    public void onClick(View v) {
        if (v == button1) {
            MySurfaceView.button_str = "button 1被触发";
            tv.setText("button 1被触发");
        } else if (v == button2) {
            MySurfaceView.button_str = "button 2被触发";
            tv.setText("button 2被触发");
        }
    }
}
该有的备注在代码后面都备注了,MySurfaceView.button_str,这个是自己的SurfaceView中定义的一个static 的变量用来交互数据用到;在那么下面就要看我们的SurfaceView,当在Xml注册需要注意什么了,我半天的时候都花在了这里!!!一定要引起注意,这也是在SurfaceView中并显示组件完成最重要的一步。

先分析:

1.SurfaceView类的创建和实现等等和之前都是一样的,该怎么去写还怎么去写,但是!构造函数一定要注意!

1
2
3
4

public MySurfaceView(Context context, AttributeSet attrs) {//备注1}
这里解释下备注1:  这里有两个构造函数,当然我们用哪个都是可以的,但是在此时我们需要明确我们到底要使用哪个。

一个参数的构造函数:如果是new出来的此类实例肯定是没有问题,但是我们为了能在显示SurfaceView同时显示别的组件,所以把自定义的SurfaceView也当作组件注册在了main——xml中,所以这里需要注意,当在xml中注册的就必须在SurfaceView中使用这种含有两个参数的构造函数的方法, xml初始化的时候会调用两个参数的这个构造方法, (当时这个问题困扰了半天的研究时间,最后在一个群友的帮助下才发现是这里出了问题)那么含有两个构造参数的方法里第二个参数指的自定义的组件的一些属性,就像长宽一样,你可以给组件属性,就是通过这个来传递的!

那么在SurfaceView 中并一同显示组件也就到底完结了,回顾下,一共分为3步,1.将我们的SurfaceView 作为一个组件view 和其他组件一同放置到布局中,当然布局的方式和显示的方式大家自己随自己喜欢定义! 2.在我们的SurfaceView中一定要使用两个构造函数的构造函数,一定!一定!就这里有区别,别的还是该怎么处理就怎么处理,就是构造函数换了 3.交互数据,对其按键的绑定在 activity中完成,别把view绑定在咱们的SurfaceView中啊,否则报错- -、

这里说下为什么要在activity中去绑定按键处理而不是在我们的surfaceview中去绑定:

其实根据xml中定义button时的id 我们可以通过R.id 索引取到button,不管在activity中还是我们的surfaceview中都可以取到,但是!绑定button这一步如果在 surfaceview中去写就一定报错,原因我解释下;

我们在xml中定义我们的surfaceview 和组件button、textview等等的时候 他们是同一级别的!!而不是把button包含在 surfaceview

里,所以虽然在surfaceview中可以根据id索引到button但绑定的时候是无法找到button的,只有我们的activitysetContentView(R.layout.main); 显示的button,所以只能在显示它的activity中去绑定,这里需要注意下;

本章源码下载: ”SurfaceView添加组件且交互数据.rar”        下载地址:  http://vdisk.weibo.com/s/hq3c0

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
118#
 楼主| 发表于 2013-2-20 15:24 | 只看该作者
【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!(2013-01-28 14:56:09)转载▼标签: android游戏学习笔记it 分类: Android游戏开发学习笔记  
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/308.html


          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!




———————————————————————


『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块;请点击下面联系进入阅读:


【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!』


——————————————————————-


上一篇我们已经可以在同一界面中既显示我们的surfaceview和button、textview等组件,那么基本算是成功了,但是身为游戏开发人员,如果不是想故意要这种类似电影形式的展现方式(我们的surfaceview在中间 – -.很想播放电影似的。。),是绝对不允许游戏的分量只是占了中间那么一部分,肯定需要全屏显示,别的组件只是一个配角的角色。那么下面先上一张截图看下为什么修改与调整。

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
119#
 楼主| 发表于 2013-2-20 15:25 | 只看该作者
看到我们画出来的字体了吧,很悲剧被覆盖了!只要有button就会有一块长条,即使我们修改button中布局的颜色也只是把长条的颜色变成白色,当然好看是好看了,但是仍旧遮挡我们的字体!这可不是我们想要的结果。我们想要的效果应该是下图这样的:


(图2):






娃哈哈,这效果就对啦,我们的view占满全屏,而组件本身才会对我们的view中的内容有遮挡,不会多出一些无用的长条遮挡….


当时虽然想的方法就是布局xml的问题,我一开始想在我们xml中定义的surfaceview中直接添加按钮,但是view不能添加view!所以没办法,就想到是否是布局的问题。经过多次尝试才终于成功做到。

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
120#
 楼主| 发表于 2013-2-20 15:25 | 只看该作者
androidrientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
   
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
   
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
        
         android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:text="Himi Button_1"
                 android:id="@+id/button1"/>  

      
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@id/button1"
                android:text="Himi Button_2"
                  android:id="@+id/button2"/>
                     
            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"/>
   
xml 修改的不大,主要将之前的线性布局改成了相对布局。虽然改动不大,但是也真的费了不少时间去调整、这样一来大家就可以在自己的游戏Surfaceview中随意添加组件啦,娃哈哈~~~


源码在上一篇已经给出下载地址,这里也只是对xml的修改大家需要可以去下载上一篇的源码,将xml调整即可、

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表