最近无聊,一时心血来潮,倒腾倒腾Android编程。自己略有写java基础,就不想拿起教程从头学起,直接以应用为导向,在实际应用中巩固和拓展java编程。搞个什么应用了,Hello World!没意思,突发奇想,倒腾一个翻牌的小应用。涉及的知识点比较多,不能自己闭门造车,从零开始,一句代码一句代码敲,要博览群码。各种搜索,找了好些源码,但只钟意一款(文后附上链接),拜读学习领会,下面开始我的再创作。
一、程序逻辑
总共9张不同内容的卡片,扩展成18张卡片(两两相同),排列成6行3列队形。用户点击卡片,实现翻牌效果,由卡片背面翻转至内容面(可爱小动物),翻转两张卡片之后,进行卡牌内容匹配,如果卡片内容一致,匹配成功,卡片消失;如果卡片内容不一致,匹配失败,卡片翻转至背面。
二、界面布局
这边没什么难点,无非是编写布局xml文件,MainActivity加载文件。我想说下布局的选择和GridView全屏自适应的设置。
1、布局的选择
我选择是FrameLayout,因为这种布局上的view都是一层一层叠加,这样方便在最上层加一个开始按钮。
2、GridView全屏自适应
在xml布局文件中设置GridViewd的android:layout_height为match_parent,无法达到效果。百度了一番,基本都是采用在适配器的getView方法中设置GridView中每个View的高度来实现GridView的屏幕自适应。代码如下:
先计算出每个View的高度
Resources res = getResources();
int statusBarHeight = 0;
int resourceId = res.getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = res.getDimensionPixelSize(resourceId);
}
int actionBarHeight = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
TypedValue tv = new TypedValue();
getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
}
int contentWidth=0,content