android连连看:
?一、android连连看:
?好久没写android了,今天就练练手,正好上午的时候,看见同学在玩连连看,就决定写这个了,不过还没写完,实现了消除,音效,Activity直接的跳转,还有GridView的使用等.
?
?二、android连连看的操作:
?点击开始游戏的按钮,进入第一关,就之间可以玩了..也就写了这么多,后面的会继续优化,比如算法优化,现在的只是图片一样就可以消除,还有界面,效果等的优化.
?
?三、运行效果图:
?1.开始:
?
?
?2.第一关界面:
?
?
?消除:
?
?
??四、代码:
??1.MainActivity:
package com.example.test;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//点击开始,更多,关于游戏
public void startClick(View v){
int i = v.getId();
switch (i) {
case R.id.button1://开始游戏
//设置intent
Intent intent1 = new Intent();
//设置intent的源地址和目标地址
intent1.setClass(MainActivity.this, GuanKa1.class);
//开始跳转
startActivity(intent1);
//关闭当前activity
MainActivity.this.finish();
break;
case R.id.button2://关于游戏
break;
case R.id.button3://更多游戏
break;
}
}
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// // Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
// return true;
// }
}
??
??2.GuanKa1:
package com.example.test;
import java.util.Random;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
public class GuanKa1 extends Activity {
// 判断是不是第一次点击
boolean ifFirstClick = false;
// 用来保存两次得到的字符串
String isFirstString;
String isSecondString;
// 用来保存两次得到的position
int isPositon1;
int isPositon2;
GridView gv;
MyAdapter my;
// 音效:
SoundPool sp;
int myMusic;// 用来设置soundID
// 图片数组;
int[] imgs = { R.drawable.b_1_1, R.drawable.b_2_1, R.drawable.b_2_2,
R.drawable.b_3_2, R.drawable.b_3_3, R.drawable.bl_2_1,
R.drawable.bl_2_2, R.drawable.bl_3_2,
R.drawable.b_1_1, R.drawable.b_2_1, R.drawable.b_2_2,
R.drawable.b_3_2, R.drawable.b_3_3, R.drawable.bl_2_1,
R.drawable.bl_2_2, R.drawable.bl_3_2 };
String[] s = { "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s1", "s2",
"s3", "s4", "s5", "s6", "s7", "s8" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置view
setContentView(R.layout.guanka1);
// 音效初始化
initMusic();
// 得到girdView
gv = (GridView) this.findViewById(R.id.Guanka1Gird);
// 给gridView设置适配器
my = new MyAdapter(this);
gv.setAdapter(my);
// 注册监听
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
if (ifFirstClick == false) {
isFirstString = my.getText(position);
isPositon1 = position;
ifFirstClick = true;
} else {
isSecondString = my.getText(position);
isPositon2 = position;
// 判断是否相同
if (isFirstString == isSecondString
&& isPositon1 != isPositon2) {
my.xiaoChu(isPositon1, isPositon2);
}
ifFirstClick = false;
}
}
});
}
/**
* 初始化音效
*/
public void initMusic() {
// 1.第一个参数为同时播放数据流的最大个数
// 2.第二个是数据流类型
// 3.第三个是声音质量
sp = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);
// 1.参数一是上下文对象
// 2.参数二是资源文件
// 3.参数三是音乐的优先级
myMusic = sp.load(GuanKa1.this, R.raw.fitmusic, 1);
}
// 自己定义适配器
class MyAdapter extends BaseAdapter {
// 上下文对象
private Context context;
public MyAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imgs.length;
}
@Override
public Object getItem(int item) {
// TODO Auto-generated method stub
return item;
}
@Override
public long getItemId(int id) {
// TODO Auto-generated method stub
return id;
}
@Override
public View getView(int positon, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
// 设置imageView对象布局
imageView.setLayoutParams(new GridView.LayoutParams(75, 75));
// 设置边界对齐方式
imageView.setAdjustViewBounds(false);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
// 设置图片资源
// 在这里进行处理
imageView.setImageResource(imgs[positon]);
return imageView;
}
public void xiaoChu(int p1, int p2) {
imgs[p1] = R.drawable.ccc;
imgs[p2] = R.drawable.ccc;
Random rd = new Random();
// 把消除后的小格子的字符串设置为IsNot+p1;即唯一的
s[p1] = "isNot" + p1;
s[p2] = "isNot" + p2;
sp.play(myMusic, 1, 1, 0, 0, 1);
my.notifyDataSetChanged();
}
// 自己写的得到行和列
public String getText(int positon) {
String getString = s[positon];
return getString;
}
}
}
?
?3.activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background1"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="107dp"
android:layout_marginTop="71dp"
android:onClick="startClick"
android:text="开始游戏" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/button2"
android:layout_below="@+id/button2"
android:layout_marginTop="56dp"
android:onClick="startClick"
android:text="更多游戏" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="63dp"
android:onClick="startClick"
android:text="关于游戏" />
</RelativeLayout>
?
?4.guanka1.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/Guanka1Gird"
android:layout_width="wrap_content"
android:layout_height="386dp"
android:layout_weight="1.18"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >
</GridView>
<LinearLayout
android:id="@+id/guanka1Linear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/pauseGuanKa1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.30"
android:text="暂停" />
</LinearLayout>
</LinearLayout>
?
?五、注意:
?Activity在跳转的时候,需要在清单文件里面注册一下的,
?
?六、总结:
?1.通过这个,对android慢慢熟悉了,可能是前段时间学c#的缘故,把基础又补了一点,今天写android很轻松的.同时这个项目也会不断完善的.
?2.这其中应该还有问题的,希望大家可以给我指出.
原文:http://cb123456.iteye.com/blog/2211981