1. 程式人生 > >Android拼圖遊戲開發全紀錄1

Android拼圖遊戲開發全紀錄1

               

今天我們繼續來講解Android拼圖遊戲全紀錄的第二篇,今天要完成的任務比較簡單:介面佈局和資原始檔

1資原始檔:

我們在開發一個專案的時候,首先要定下這個App的基調,是小清新呢還是重口味,所以我們需要定義一些顏色、style等

首先是顏色等:

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="app_bg">#000000</color>        <color name="title_text">#FFFFFF</color>        <color
name="record_title_bg">
#F56A47</color>    <color name="record_title_text">#FFFFFF</color>    <color name="record_title_text_dark">#727272</color>        <color name="main_bg">#3EC5FF</color>    <color name="main_text">#FFFFFF</color>        <color
name="setting_reg_bg">
#A2A2A2</color>    <color name="setting_text_light">#C3C3C3</color>    <color name="setting_text_dark">#111111</color>        <color name="tv_click">#33444444</color></resources>
以上就定義好了我們這個App的小清新的風格

然後是字串資源,這個隨意吧

<?xml version="1.0"
encoding="utf-8"?>
<resources>    <string name="app_name">XPuzzle</string>    <string name="action_settings">Settings</string>    <string name="hello_world">Hello world!</string>    <string name="puzzle_main_type">選擇難度:</string>    <string name="puzzle_main_steps">步數:</string>    <string name="puzzle_main_img">原        圖</string>    <string name="puzzle_main_reset">重        置</string>    <string name="puzzle_main_back">返        回</string>    <string name="puzzle_main_time">時間:</string>    <string name="puzzle_main_type_selected">2 X 2</string>    <string name="puzzle_main_record">檢視記錄</string>    <string name="puzzle_main_more">瞭解更多</string></resources>
接下來是自定義的一個帶Selector的Shape,這樣Button使用這個背景後,就比較配合小清新的風格了
<?xml version="1.0" encoding="UTF-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="true"><shape android:shape="rectangle">            <!-- 填充的顏色 -->            <solid android:color="#33444444" />            <!-- 設定按鈕的四個角為弧形 -->            <!-- android:radius 弧形的半徑 -->            <corners android:radius="5dip" />            <!-- padding:Button裡面的文字與Button邊界的間隔 -->            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />        </shape></item>    <item><shape android:shape="rectangle">            <!-- 填充的顏色 -->            <solid android:color="@color/title_text" />            <!-- 設定按鈕的四個角為弧形 -->            <!-- android:radius 弧形的半徑 -->            <corners android:radius="5dip" />            <!-- padding:Button裡面的文字與Button邊界的間隔 -->            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />        </shape></item></selector>
這個就是我們在前面圖中看見的Button了,是不是很好看啊

嗯 還有個TextView的selector

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@color/tv_click" android:state_pressed="true"></item>    <item android:drawable="@android:color/transparent"></item></selector>
下面我們就要開始實現我們的介面了:

首先是首頁介面:

佈局比較簡單,相信大家都看得懂

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/main_bg" >    <LinearLayout        android:id="@+id/ll_puzzle_main_spinner"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_margin="10dip" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:text="@string/puzzle_main_type"            android:textColor="@color/main_text"            android:textSize="@dimen/text_title" />        <TextView            android:id="@+id/tv_puzzle_main_type_selected"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:background="@drawable/textview_click"            android:text="@string/puzzle_main_type_selected"            android:textColor="@color/main_text"            android:textSize="@dimen/text_title" />    </LinearLayout>    <LinearLayout        android:id="@+id/ll_xpuzzle_main_functions"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/gv_xpuzzle_main_pic_list"        android:layout_alignParentBottom="true"        android:gravity="center"        android:layout_alignRight="@+id/gv_xpuzzle_main_pic_list"        android:layout_margin="@dimen/padding" >        <Button            android:id="@+id/btn_puzzle_main_record"            style="@style/btn_style"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_margin="@dimen/padding"            android:background="@drawable/white_button"            android:text="@string/puzzle_main_record" />        <Button            android:id="@+id/btn_puzzle_main_setting"            style="@style/btn_style"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_margin="@dimen/padding"            android:background="@drawable/white_button"            android:text="@string/puzzle_main_more" />    </LinearLayout>    <GridView        android:id="@+id/gv_xpuzzle_main_pic_list"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_above="@id/ll_xpuzzle_main_functions"        android:layout_below="@id/ll_puzzle_main_spinner"        android:layout_centerHorizontal="true"        android:layout_margin="@dimen/padding"        android:gravity="center_horizontal"        android:horizontalSpacing="@dimen/padding"        android:numColumns="4"        android:padding="@dimen/padding"        android:verticalSpacing="@dimen/padding" >    </GridView></RelativeLayout>
這就OK了。

裡面的選擇難度是一個popupwindow,所以還有個佈局檔案

這個。。so easy了

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@android:color/transparent"    android:orientation="horizontal" >    <TextView        android:id="@+id/tv_main_type_2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginRight="8dp"        android:text="2x2"        android:textColor="@color/main_text"        android:textSize="@dimen/text_title_sub" />    <TextView        android:id="@+id/tv_main_type_3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginRight="8dp"        android:text="3x3"        android:textColor="@color/main_text"        android:textSize="@dimen/text_title_sub" />    <TextView        android:id="@+id/tv_main_type_4"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="4x4"        android:textColor="@color/main_text"        android:textSize="@dimen/text_title_sub" /></LinearLayout>
最後是拼圖的佈局介面:如下圖

就是這樣啦,其實介面也很簡單

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/rl_puzzle_main_main_layout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/main_bg" >    <LinearLayout        android:id="@+id/ll_puzzle_main_spinner"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_margin="@dimen/padding"        android:gravity="center_horizontal" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:text="@string/puzzle_main_steps"            android:textColor="@color/title_text"            android:textSize="@dimen/text_title" />        <TextView            android:id="@+id/tv_puzzle_main_counts"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:gravity="center"            android:paddingRight="50dip"            android:text="1"            android:textColor="@color/title_text"            android:textSize="@dimen/text_title" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:text="@string/puzzle_main_time"            android:textColor="@color/title_text"            android:textSize="@dimen/text_title" />        <TextView            android:id="@+id/tv_puzzle_main_time"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:gravity="center"            android:text="1"            android:textColor="@color/title_text"            android:textSize="@dimen/text_title" />    </LinearLayout>    <LinearLayout        android:id="@+id/ll_puzzle_main_btns"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:layout_margin="@dimen/padding" >        <Button            android:id="@+id/btn_puzzle_main_img"            style="@style/btn_style"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_margin="@dimen/padding"            android:background="@drawable/white_button"            android:text="@string/puzzle_main_img" />        <Button            android:id="@+id/btn_puzzle_main_restart"            style="@style/btn_style"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_margin="@dimen/padding"            android:background="@drawable/white_button"            android:text="@string/puzzle_main_reset" />        <Button            android:id="@+id/btn_puzzle_main_back"            style="@style/btn_style"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_margin="@dimen/padding"            android:background="@drawable/white_button"            android:text="@string/puzzle_main_back" />    </LinearLayout>    <GridView        android:id="@+id/gv_puzzle_main_detail"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_above="@id/ll_puzzle_main_btns"        android:layout_below="@id/ll_puzzle_main_spinner"        android:layout_centerInParent="true"        android:layout_margin="@dimen/padding" >    </GridView></RelativeLayout>
好了,今天的東西都是些準備工作,所以比較簡單。