`

android游戏开发之选关画面

阅读更多

在游戏开发中,往往要提供选关的页面,选择关卡可以简单地使用listView,如果想效果好一点,可以选择 用gallery控件。Gallery控件的使用在api demo里面有很详尽的用法介绍,如果不想看api demo,下面有我精简了的代码:

程序的效果是可以拖动图片,单击选择。

 

首先在layout里面定义gallery控件:

<?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"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Gallery 
	android:id="@+id/Gallery01" 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content">
</Gallery>
</LinearLayout>

 

再定义Adapter,这个类是用来控制gallery的图片源等操作的。

package com.ray.test;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
	private Context mContext; //define Context 

    private Integer[] mImageIds = { //picture source
            R.drawable.p1,
            R.drawable.p2,
            R.drawable.p3,
            R.drawable.p4,
            R.drawable.p5,
            R.drawable.p6,
            R.drawable.p7,
            R.drawable.p8,
    };

    public ImageAdapter(Context c) { //define ImageAdapter
        mContext = c;
    }

    //get the picture number
    public int getCount() { 
        return mImageIds.length;
    }
    
    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView i = new ImageView(mContext);
        i.setImageResource(mImageIds[position]);//set resource for the imageView
        i.setLayoutParams(new Gallery.LayoutParams(192, 192));//layout
        i.setScaleType(ImageView.ScaleType.FIT_XY);//set scale type
        return i;
    }
}

 

最后是Activity调用:

package com.ray.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class TestGallery extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Gallery g = (Gallery) findViewById(R.id.Gallery01);//get Gallery component
        g.setAdapter(new ImageAdapter(this));//set image resource for gallery

        //add listener
        g.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView parent, View v, int position, long id) {
            	//just a test,u can start a game activity
                Toast.makeText(TestGallery.this, "" + position, Toast.LENGTH_SHORT).show();
            }
        });


    }
}

 

分享到:
评论
15 楼 javajdbc 2010-04-19  
效果不错 谢谢LZ分享。。。。 3QU
14 楼 smalllixin 2010-04-18  
偶也正在弄游戏呢~

这种方式选关也是不错的选择
13 楼 adamli007 2010-04-16  
楼上的问题了解了,现在想知道怎样把sdcard中的图片放入GridView中显示出来。
12 楼 adamli007 2010-04-16  
请问怎样把系统的图片显示在屏幕上?
如把/sdcard/DDMS下的图片或/data自定义目录下的图片
11 楼 wjb_forward 2010-04-07  
谢谢你,哈利波特
10 楼 sinye 2010-03-17  
谢谢楼主分享,在楼主这里的确能学到许多好东西!
9 楼 BarryWei 2009-12-27  
Gallery拖动的方向是不是只有横向拖动?可以垂直纵向拖动吗?
8 楼 sunnyboyi 2009-12-26  
下载下来了,试运行,效果杠杠的,谢谢楼主的分享!
7 楼 swcai 2009-09-27  
多谢楼主的文章。我更习惯使用listView再加imageview...好处是我可以加一些文字的注解和历史信息。Gallery的效果主要在drawable的设计是不是直观。
6 楼 ivay 2009-09-26  
在你的部落格确实能学到不少东西。 以后要常来学习。
5 楼 szgaea 2009-09-23  
哎,我对游戏方面总是不能理解,那些屏幕的x,y呀,感觉很难读懂,感谢您的分享!
4 楼 wtgoku 2009-09-23  
不错的东西~~~
3 楼 lordhong 2009-09-23  
不错, 谢谢分享 ^_^)Y
2 楼 raymondlueng 2009-09-22  
pure 写道
很不错,raymondlueng兄总是有惊喜。

谢谢,谢谢你的鼓励!
1 楼 pure 2009-09-22  
很不错,raymondlueng兄总是有惊喜。

相关推荐

Global site tag (gtag.js) - Google Analytics