描述:
猜数字游戏包含“猜数”、“排行榜”和“设置” 3个模块。
1)“猜数”模块:随机生成一定范围内的一个整数,用户可以输入自己的猜想数字,程序进行判断并给出“猜大”、“猜小”或“正确”的3种提示
2)“排行榜”模块:根据用户猜对数字的次数进行排名显示。
3)“设置”模块:在这个模块,用户可以设置自己的用户名,也可以选择是否使用“默认姓名”进行后面的每一次猜数游戏
如果使用,后面则直接进行游戏,
如果不使用,后面的每次游戏结束后程序会提示要输入用户名,以便记录游戏历史,并在“排行榜”模块显示。
在“设置”模块,用户还可以选择接下来的要进行的猜数游戏的猜数范围,本次给出1-100,1-1000,1-10000三种范围,大家后期可以根据需要修改调整。
一、程序整体实现效果是这样的:


无默认姓名猜对时:

二、整个项目的结构分析:
先放一张整个Project目录结构:
res下的图片素材:

接下来,逐一对每个模块实现步骤进行讲解!
【数据库】
新建一个辅助类MyHelper类继承SQLiteOpenHelper类,并实现它的onCreate方法和onUpgrade方法。

package com.example.mygame;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class MyHelper extends SQLiteOpenHelper {public MyHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version){super(context,name,factory,version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table ordertb(_id integer primary key "+"autoincrement," +"name string not null,count integer not null,range integer not null)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

下方导航栏的实现】

<?xml version="1.0" encoding="utf-8"?>
<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"tools:context=".MainActivity"><LinearLayoutandroid:id="@+id/linearLayout"android:layout_width="match_parent"android:layout_height="60dp"android:layout_alignParentLeft="true"android:layout_alignParentBottom="true"android:layout_alignParentStart="true"android:background="#E8EEF5"android:baselineAligned="false"tools:ignore="Orientation"><!--猜数--><LinearLayoutandroid:id="@+id/llay_guess"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:background="#E8EEF5"android:orientation="vertical"><ImageViewandroid:id="@+id/img_guess"android:layout_width="40dp"android:layout_height="40dp"android:src="@drawable/game_on"/><TextViewandroid:id="@+id/txt_guess"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/txt_guess"android:textSize="20dp"android:textStyle="bold"android:textColor="@color/color_txt_pressed"/></LinearLayout><LinearLayoutandroid:layout_width="2dp"android:layout_height="match_parent"android:divider="@color/color_txt_pressed"android:showDividers="end"></LinearLayout><!--排行榜--><LinearLayoutandroid:id="@+id/llay_order"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"android:gravity="center"><ImageViewandroid:id="@+id/img_order"android:layout_width="40dp"android:layout_height="40dp"android:src="@drawable/rank_off"android:layout_gravity="center_horizontal"/><TextViewandroid:id="@+id/txt_order"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/txt_order"android:textSize="20dp"android:textStyle="bold"android:textColor="@color/color_txt_normal"/></LinearLayout><!--设置--><LinearLayoutandroid:id="@+id/llay_setting"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"android:gravity="center"><ImageViewandroid:id="@+id/img_setting"android:layout_width="40dp"android:layout_height="40dp"android:src="@drawable/setting_off"/><TextViewandroid:id="@+id/txt_setting"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/txt_setting"android:textSize="20dp"android:textStyle="bold"android:textColor="@color/color_txt_normal"/></LinearLayout></LinearLayout><FrameLayoutandroid:id="@+id/fragment_content"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@id/linearLayout"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"/></RelativeLayout>

布局中涉及的“strings.xml”文件如下:

  <string name="txt_guess">猜数</string><string name="txt_order">排行榜</string><string name="txt_setting">设置</string>

布局中涉及的“colors.xml”文件如下:

    <color name="color_txt_normal">#737373</color><color name="color_txt_pressed">#d4257b</color>

在MainActivity中实现导航逻辑之前,先搭个基本页面框架:
新建GuessFragment(猜数字页)、OrderFragment(积分排行榜页)和SettingFragment(设置页)3个类,以及对应的布局文件“fragment_guess.xml”、“fragment_order.xml”和“fragment_setting.xml”。
在MainActivity中的代码如下:

package com.example.mygame;import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private LinearLayout ILay_guess,ILay_order,ILay_setting;private ImageView img_guess,img_order,img_setting;private TextView txt_guess,txt_order,txt_setting;private Fragment fm_guess,fm_order,fm_setting;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();setDefaultFragment();setOnClickLisener();}private void initView(){ILay_guess = findViewById(R.id.llay_guess);ILay_order = findViewById(R.id.llay_order);ILay_setting = findViewById(R.id.llay_setting);img_guess = findViewById(R.id.img_guess);img_order = findViewById(R.id.img_order);img_setting = findViewById(R.id.img_setting);txt_guess = findViewById(R.id.txt_guess);txt_order = findViewById(R.id.txt_order);txt_setting = findViewById(R.id.txt_setting);}private void setDefaultFragment(){FragmentManager fm = getSupportFragmentManager();FragmentTransaction transaction = fm.beginTransaction();fm_guess = new GuessFragment();transaction.replace(R.id.fragment_content,fm_guess,"GUESS");transaction.commit();}private void setOnClickLisener(){ILay_guess.setOnClickListener(new LinearLayoutOnClickLisener());ILay_order.setOnClickListener(new LinearLayoutOnClickLisener());ILay_setting.setOnClickListener(new LinearLayoutOnClickLisener());}private class LinearLayoutOnClickLisener implements View.OnClickListener{@Overridepublic void onClick(View v) {FragmentManager fm = getSupportFragmentManager();FragmentTransaction transaction = fm.beginTransaction();resetLinearLayout();switch (v.getId()){case R.id.llay_guess:if (fm_guess == null){fm_guess = new  GuessFragment();}img_guess.setImageResource(R.drawable.game_on);txt_guess.setTextColor(ContextCompat.getColor(MainActivity.this,R.color.color_txt_pressed));transaction.replace(R.id.fragment_content,fm_guess,"GUESS");break;case R.id.llay_order:if (fm_order == null){fm_order = new OrderFragment();}img_order.setImageResource(R.drawable.rank_on);txt_order.setTextColor(ContextCompat.getColor(MainActivity.this,R.color.color_txt_pressed));transaction.replace(R.id.fragment_content,fm_order,"ORDER");break;case R.id.llay_setting:if (fm_setting == null){fm_setting = new SettingFragment();}img_setting.setImageResource(R.drawable.setting_on);txt_setting.setTextColor(ContextCompat.getColor(MainActivity.this,R.color.color_txt_pressed));transaction.replace(R.id.fragment_content,fm_setting,"SETTING");break;}transaction.commit();}}private void resetLinearLayout(){img_guess.setImageResource(R.drawable.game_off);img_order.setImageResource(R.drawable.rank_off);img_setting.setImageResource(R.drawable.setting_off);txt_guess.setTextColor(ContextCompat.getColor(MainActivity.this,R.color.color_txt_normal));txt_order.setTextColor(ContextCompat.getColor(MainActivity.this,R.color.color_txt_normal));txt_setting.setTextColor(ContextCompat.getColor(MainActivity.this,R.color.color_txt_normal));}}

【“设置”模块的实现】
在对应的布局文件“fragment_setting.xml”中,代码布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".SettingFragment"android:orientation="vertical"><TextViewandroid:id="@+id/txt_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/txt_name"android:textSize="22dp"/><EditTextandroid:id="@+id/edit_defaultName"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:padding="8dp"android:hint="@string/edit_name"android:textSize="22dp" /><CheckBoxandroid:id="@+id/chb_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="@string/chb_useDefaultName"android:textSize="22dp"/><TextViewandroid:id="@+id/txt_defaultRange"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="@string/txt_defaultRange"android:textSize="22dp"/><Spinnerandroid:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="wrap_content"android:entries="@array/range_array"android:layout_marginTop="10dp"/><Buttonandroid:id="@+id/btn_save"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="@string/btn_setting"android:textSize="22dp"/>
</LinearLayout>

布局文件中涉及的“strings.xml”文件内容如下:

<string name="txt_name">请输入默认姓名:</string><string name="chb_useDefaultName">使用默认姓名:</string><string name="txt_defaultRange">默认范围:</string><string name="btn_setting">保存设置</string><string name="edit_name">默认姓名</string><string-array name="range_array"><item>100</item><item>1000</item><item>10000</item></string-array>

该模块的逻辑实现代码在“SettingFragment”类中实现:

package com.example.mygame;import android.content.Context;
import android.content.SharedPreferences;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;public class SettingFragment extends Fragment{private EditText edit_name;private Button btn_save;private CheckBox chb_defaultName;private Spinner spinner;private Context context;@Overridepublic View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View view = inflater.inflate(R.layout.fragment_setting,container,false);context = view.getContext();initView(view);btn_save.setOnClickListener(new ButtonOnClickLisener());return view;}private void initView(View view){edit_name = view.findViewById(R.id.edit_defaultName);btn_save = view.findViewById(R.id.btn_save);chb_defaultName = view.findViewById(R.id.chb_name);spinner = view.findViewById(R.id.spinner);}public class ButtonOnClickLisener implements View.OnClickListener{@Overridepublic void onClick(View v) {SharedPreferences sharedPreferences = context.getSharedPreferences("Info",Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();int defaultRange = Integer.valueOf(spinner.getSelectedItem().toString());editor.putInt("range",defaultRange);if (chb_defaultName.isChecked()){String defaultName = edit_name.getText().toString();if (defaultName.isEmpty()){Toast.makeText(context,"请输入默认姓名!",Toast.LENGTH_SHORT).show();return;}editor.putString("name",defaultName);}else {editor.remove("name");}if (editor.commit()){Toast.makeText(context,"保存成功!",Toast.LENGTH_SHORT).show();}}}
}

完成可执行run,在模拟器跑一下。
【“猜数”模块的实现】
猜数模块布局文件"fragment_guess.xml"内容如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".GuessFragment"android:background="#ffffff"android:orientation="vertical"><TextViewandroid:id="@+id/txt_range"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:textSize="22dp"/><EditTextandroid:id="@+id/edit_num"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_below="@id/txt_range"android:padding="8dp"android:inputType="numberSigned"android:textSize="22dp"/><Buttonandroid:id="@+id/btn_submit"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_below="@id/edit_num"android:textSize="22dp"/><TextViewandroid:id="@+id/txt_compare"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:textSize="22dp"android:layout_below="@id/btn_submit"android:layout_centerHorizontal="true"/><ImageViewandroid:id="@+id/img_broad"android:layout_width="60dp"android:layout_height="60dp"android:layout_margin="10dp"android:layout_toStartOf="@id/txt_compare"android:layout_toLeftOf="@id/txt_compare"android:layout_below="@id/btn_submit"/><TextViewandroid:id="@+id/txt_count"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:textSize="22dp"android:layout_below="@id/txt_compare"android:layout_alignLeft="@id/txt_compare"android:layout_alignStart="@id/txt_compare"/><ImageViewandroid:id="@+id/img_bingo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/img_broad"android:layout_centerHorizontal="true"android:layout_marginTop="10dp"android:src="@drawable/bingo"/>
</RelativeLayout>

在GuessFragment类中实现猜数判断逻辑:

package com.example.mygame;import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import java.util.Random;public class GuessFragment extends Fragment {private int count,rndNum;private EditText edit_num;private TextView txt_range,txt_compare,txt_count;private Button btn_submit;private ImageView img_broad,img_bingo;private boolean flag;private String name;public int range = 0;private Context context;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){View view = inflater.inflate(R.layout.fragment_guess,container,false);context = view.getContext();initView(view);initData();btn_submit.setOnClickListener(new ButtonOnClickLisener());return view;}private void initView(View view){edit_num = view.findViewById(R.id.edit_num);txt_range = view.findViewById(R.id.txt_range);txt_compare = view.findViewById(R.id.txt_compare);txt_count = view.findViewById(R.id.txt_count);btn_submit = view.findViewById(R.id.btn_submit);img_broad = view.findViewById(R.id.img_broad);img_bingo = view.findViewById(R.id.img_bingo);}public void initData(){SharedPreferences sharedPreferences = context.getSharedPreferences("Info",Context.MODE_PRIVATE);name = sharedPreferences.getString("name","");range = sharedPreferences.getInt("range",100);Random mRandom = new Random();rndNum = mRandom.nextInt(range)+1;txt_range.setText("请输入1-"+range+"之间的整数");txt_count.setText("");txt_compare.setText("");img_broad.setVisibility(View.INVISIBLE);img_bingo.setVisibility(View.INVISIBLE);btn_submit.setText("提交");flag = true;count = 0;}private class ButtonOnClickLisener implements View.OnClickListener{@Overridepublic void onClick(View v) {if (flag){String str_num = edit_num.getText().toString();if (str_num.isEmpty()){Toast.makeText(context,"请输入数字!",Toast.LENGTH_SHORT).show();return;}edit_num.setText("");int numInput = Integer.valueOf(str_num);if (numInput<1 || numInput > range){Toast.makeText(context,"请输入范围内的数字!",Toast.LENGTH_SHORT).show();return;}count += 1;img_broad.setVisibility(View.VISIBLE);txt_count.setText("猜数次数:"+count);if (numInput > rndNum){txt_compare.setText("输入的"+str_num+"太大了!");}else if(numInput < rndNum){txt_compare.setText("输入的"+str_num+"太小了!");}else{txt_compare.setText("恭喜你猜对啦!正确答案是:"+rndNum+"!");img_bingo.setVisibility(View.VISIBLE);flag = false;btn_submit.setText("再猜一次");if (name.isEmpty()){final CustomDialog dialog = new CustomDialog(context,R.style.MyDialog);dialog.show();Button btn_confirm = dialog.findViewById(R.id.btn_confirm);final  EditText edit_name = dialog.findViewById(R.id.edit_inputName);btn_confirm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {name = edit_name.getText().toString();if (!name.isEmpty()){insertData();dialog.dismiss();}}});} else {insertData();}}}else {initData();}}}private void insertData(){MyHelper helper = new MyHelper(context,"Guess.db",null,1);SQLiteDatabase db = helper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name",name);values.put("count",count);values.put("range",range);db.insert("ordertb",null,values);db.close();}}

可以发现,在GuessFragment类中,引入了CustomDialog类,这是自定义的对话框,用于前面基本构思说的,用户在进行猜数游戏时,如果在设置页中,不选择使用默认姓名的话,游戏结束会要求用户输入用户名。
CustomDialog自定义对话框的具体实现如下:
布局文件“alertdialog_input.xml”:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:background="#80BCF7"android:padding="20dp"><TextViewandroid:id="@+id/txt_info"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="5dp"android:gravity="center"android:text="@string/txt_dialog_info"android:textSize="22dp"android:textColor="#ffffff"/><EditTextandroid:id="@+id/edit_inputName"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20dp"android:padding="8dp"/><Buttonandroid:id="@+id/btn_confirm"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/btn_dialog_confirm"android:textSize="20dp"/>
</LinearLayout>

布局文件中涉及到的“strings.xml”文件内容如下:

    <string name="txt_dialog_info">请输入姓名</string><string name="btn_dialog_confirm">确定</string>

CustomDialog类实现代码:

package com.example.mygame;import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.WindowManager;public class CustomDialog extends Dialog {private Context context;public CustomDialog(Context context,int themeResId) {super(context,themeResId);this.context = context;}@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);this.setContentView(R.layout.alertdialog_input);}@Overridepublic void show(){super.show();
//        设置对话框宽度、对齐方式等WindowManager.LayoutParams layoutParams = getWindow().getAttributes();layoutParams.gravity = Gravity.CENTER;layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
//        getWindow().getDecorView().setPadding(0,0,0,0);getWindow().setAttributes(layoutParams);}
}

【“排行榜”模块的实现】
该模块布局文件“fragment_order.xml””内容如下:

<?xml version="1.0" encoding="utf-8"?>
<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"tools:context=".OrderFragment"><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="wrap_content"><android.support.v4.view.PagerTabStripandroid:id="@+id/tabstrip"android:layout_width="match_parent"android:layout_height="wrap_content"/></android.support.v4.view.ViewPager></RelativeLayout>

新建“viewpager_tab_hundred.xml”布局文件(用于在排行榜页中显示排名,也可以多建几个同样的文件,在排行榜实现分页显示不同范围的猜数游戏有不同的排行榜,这里只在一页显示全部):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:id="@+id/lv_hundred"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView>
</LinearLayout>

OrderFragment类逻辑代码实现:

package com.example.mygame;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;import java.util.ArrayList;public class OrderFragment extends Fragment {private ListView lv_hunderd,lv_thousand,lv_tenthousand;private ViewPager pager;private Context context;private PagerTabStrip tabStrip;private ArrayList<View> viewContainer;private ArrayList<String> titleContainer;private ArrayList<String>[] data;     //用于为每个pager的ListView准备数据@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){View view = inflater.inflate(R.layout.fragment_order,container,false);context = view.getContext();initView(view);pagersetAdapter();return view;}private void initData(){MyHelper helper = new MyHelper(context,"Guess.db",null,1);SQLiteDatabase db = helper.getReadableDatabase();int[] ranges = {100,1000,1000};data = new ArrayList[3];data[0] = new ArrayList<>();data[1] = new ArrayList<>();data[2] = new ArrayList<>();for (int i = 0; i < 3; i++) {Cursor c = db.query("ordertb",null,null,null,null,null,"count");if (c.getCount()>0){while (c.moveToNext()){data[i].add("姓名:"+c.getString(c.getColumnIndex("name"))+"\t\t花费次数: "+c.getString(c.getColumnIndex("count")));}}else {Log.i("info","数据库无数据");}c.close();}db.close();}private void initListView(){ArrayAdapter<String> adapter_hundred = new ArrayAdapter<String>(context,android.R.layout.simple_expandable_list_item_1,data[0]);lv_hunderd.setAdapter(adapter_hundred);ArrayAdapter<String> adapter_thousand = new ArrayAdapter<String>(context,android.R.layout.simple_expandable_list_item_1,data[1]);lv_hunderd.setAdapter(adapter_thousand);ArrayAdapter<String> adapter_tenthousand = new ArrayAdapter<String>(context,android.R.layout.simple_expandable_list_item_1,data[2]);lv_hunderd.setAdapter(adapter_tenthousand);}private void initView(View view){pager = view.findViewById(R.id.viewpager);tabStrip = view.findViewById(R.id.tabstrip);tabStrip.setDrawFullUnderline(false);tabStrip.setBackgroundColor(Color.parseColor("#ccccff"));tabStrip.setTabIndicatorColor(Color.parseColor("#6666ff"));LayoutInflater inflater = getActivity().getLayoutInflater();View view_tab1 = inflater.inflate(R.layout.viewpager_tab_hundred,null);
//        View view_tab2 = inflater.inflate(R.layout.viewpager_tab_thousand,null);
//        View view_tab3 = inflater.inflate(R.layout.viewpager_tab_tenthousand,null);lv_hunderd = view_tab1.findViewById(R.id.lv_hundred);
//        lv_thousand = view_tab2.findViewById(R.id.lv_thousand);
//        lv_tenthousand = view_tab3.findViewById(R.id.lv_tenthousand);initData();initListView();
//        添加到ViewPagerviewContainer = new ArrayList<>();viewContainer.add(view_tab1);
//        viewContainer.add(view_tab2);
//        viewContainer.add(view_tab3);//        设置标题titleContainer = new ArrayList<>();titleContainer.add("排行榜");
//        titleContainer.add("1-1000排行榜");
//        titleContainer.add("1-10000排行榜");}private void pagersetAdapter(){pager.setAdapter(new PagerAdapter() {@Overridepublic int getCount() {return viewContainer.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}@Overridepublic void destroyItem(ViewGroup container,int position,Object object){((ViewPager)container).removeView(viewContainer.get(position));}@Overridepublic Object instantiateItem(ViewGroup container,int position){((ViewPager)container).addView(viewContainer.get(position));return viewContainer.get(position);}@Overridepublic int getItemPosition(Object object){return super.getItemPosition(object);}@Overridepublic CharSequence getPageTitle(int position){return titleContainer.get(position);}});}
}

到这里,猜数页,猜数页填写用户名的对话框,排行榜,设置页都已经实现了。整个工程也基本完结了。

Android应用-猜数字小游戏相关推荐

  1. 1.12 实例:猜数字小游戏

    猜数字是一个经典的小游戏,程序先产生一个随机数,然后用户输入数字,程序将输入的数字与随机数进行对比,给出用户相应的提示信息. 本节实现了一个基于 IO 流的猜数字游戏,游戏中限制玩家游戏次数,游戏试玩 ...

  2. 第三次学JAVA再学不好就吃翔(part28)--猜数字小游戏

    学习笔记,仅供参考 面向对象 猜数字小游戏 随机生成一个1 ~ 100之间的数,我来猜是几: import java.util.Scanner;class GuessNumTest {public s ...

  3. 【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏

    目录 [iVX 初级工程师培训教程 10篇文拿证]01 了解 iVX 完成新年贺卡 [iVX 初级工程师培训教程 10篇文拿证]02 数值绑定及自适应网站制作 [iVX 初级工程师培训教程 10篇文拿 ...

  4. java 做猜数字小游戏_Java Properties类:利用Properties类制作猜数字小游戏

    在学习Random类时我们制作过猜数字小游戏,学习了Properties类后,可以为此游戏添加保存得分记录功能 游戏规则: 玩家可以选择玩游戏还是查看得分 玩游戏: 首先玩家需要选择难度: 难度级别 ...

  5. 猜数字小游戏(随机生成’三剑客‘)

    大家好,我是一只励志要翻身的小牛,废话少说,下面就给大家介绍第一个C语言小游戏--猜数字小游戏! 文章目录 一.游戏规则 二.效果展示 三.游戏设计思路 四.游戏交互界面 1.创建游戏菜单 2.创建游 ...

  6. C++猜数字小游戏1.0.1版猜数字1.1---国庆特版(双人战斗版)

    (回忆上一篇开头--) 国庆在家,你觉得无聊吗???                                                                          ...

  7. 带登录页面的猜数字小游戏

    本内容包含:登录页面+注册页面+猜数字小游戏页面 登录页面:手机号+密码+校验码+随机校验码+登录按钮+注册 注册页面:手机号+密码+密码确认+注册按钮 游戏页面:标题(提示框)+输入框+猜一下+重置 ...

  8. 微信小程序开发实例:猜数字小游戏

    这学期选修了<微信小程序设计>这门通识课,最近准备把本学期的部分小作业整理一下. 一.案例描述 设计一个微信小程序,由后台生成一个0~100的随机整数,用户猜这个整数,并在输入框中输入用户 ...

  9. 初识JAVA:猜数字小游戏案例---系统产生一个1-100之间的随机数,猜出这个数是多少?

    package com.pku.wuyu.io; import java.util.IllegalFormatCodePointException; import java.util.Random; ...

最新文章

  1. 常用实验资源共享整理 20111026
  2. Python进阶02 文本文件读写
  3. 通过浏览器navigator判断浏览器版本或者手机类型判断微信访问
  4. Theano - Numpy 新手
  5. Linux之交互式scripts
  6. freemarker html 乱码,Freemarker生成静态html文件及中文乱码的问题.pdf
  7. 页面性能优化参考建议
  8. qt5不能添加新文件_VS2017配置Qt5.9教程
  9. OSChina 周三乱弹 —— 究竟是谁走漏风声
  10. IPv6各地址计算方式汇总
  11. java简单小项目_java入门简单小项目有哪些?适合java初学者项目
  12. 图论(2):树和割集
  13. teamviewer连接不上的原因及解决方法有哪些
  14. 谷歌退出中国声明全文(中英对照版)A new approach to China
  15. docker启动容器之后马上又自动关闭解决办法
  16. 在电脑上安装了百度一键root工具后,启动adb提示:adb server version (31) doesn't match this client (36); killing...
  17. Mifare l射频卡初始值及其相关说明
  18. AC 瘦AP配置 ensp
  19. BT——专门为大容量文件的共享而设计的网络协议
  20. C盘不够用-删除D盘空间贡献给C盘的简单方法

热门文章

  1. 你的人生中,最恐惧的事情是什么
  2. Problem M: 定义类Shape、Rectangle、Circle和Square
  3. 漫漫人生路 何时是尽头
  4. 修改win7资源管理器默认启动位置
  5. 网动仪预警全球网络波动?!来看看是怎么做到的!
  6. php单独使用blade模板引擎,blade模板的使用
  7. c MYSQL查询数据在窗体展示,C运行3个MySQL插入查询,只需按一个按钮-来自文本框和列表视图的数据...
  8. 站长说说之网站seo优化主要有哪些方面
  9. 记录使用WIN10自带的恢复功能,还原系统
  10. 直角坐标系中点的旋转【点绕点旋转】