【小墩墩学Android】三国人物列传(二)

目录

1.前言

2.开发环境

3.表格界面 

4.列表界面 

5.查找界面 

6.人物详细界面

7.快捷菜单界面

8.势力情报界面

9.地图界面

10.参数设置界面

后续


1.前言

“一壶浊酒喜相逢,古今多少事,都付笑谈中。”
假期空闲之际,把三国志11又玩了一番,看见游戏里面的头像形象生动,于是用android写了一个app,以此纪念曾经废寝忘食玩游戏的岁月,呵呵🙂。

2.开发环境

  1. 操作系统:Win10 64位
  2. 开发工具:Android Studio 2020.3
  3. 开发语言:java
  4. 数据库:sqlite3

3.表格界面 

技术分析:
表格实现基于RecyclerView和GridLayoutManager

GridLayoutManager layoutManager = new GridLayoutManager(MainActivity.this,5);
((RecyclerView)recyclerView).setLayoutManager(layoutManager);
sideBar.setVisibility(View.GONE);

4.列表界面 

技术分析

  1. 列表实现,基于RecyclerView和LinearLayoutManager
  2. 人物名字排序,基于第三方库HanziToPinyin获取中文的首字母
  3. 右侧字母滚动条:基于第三方库AZSideBar
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
((RecyclerView)recyclerView).setLayoutManager(layoutManager);
sideBar.setVisibility(View.VISIBLE);
private void initSlideView() {
        lettes = new ArrayMap<>();
        tv_hint = (TextView) findViewById(R.id.tv_hint);
        sideBar = (AZSideBar) findViewById(R.id.sideBar);
        sideBar.setVisibility(View.INVISIBLE);
        sideBar.setOnTouchingLetterChangedListener(new OnChooseLetterChangedListener() {
            @Override
            public void onChooseLetter(String s) {
                if (!tv_hint.isShown())
                    tv_hint.setVisibility(View.VISIBLE);
                tv_hint.setText(s);
                selectRecyclerView(s);
            }

            @Override
            public void onNoChooseLetter() {
                tv_hint.setVisibility(View.GONE);
            }
        });
    }

5.查找界面 

技术分析:

  • 搜索框,基于SearchView控件实现的
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        final MenuItem item = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) MenuItemCompat.getActionView(item);

        //搜索框展开时后面叉叉按钮的点击事件
        mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                Log.e("mSearchView", "onClose");
                FruitFactory.doSearch("");
                setupRecyclerView((RecyclerView) recyclerView);
                return false;
            }
        });
        //搜索图标按钮(打开搜索框的按钮)的点击事件
        mSearchView.setOnSearchClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("mSearchView", "onClick");
            }
        });
        //搜索框文字变化监听
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                Log.e("mSearchView", "TextSubmit : " + s);
                FruitFactory.doSearch(s);
                setupRecyclerView((RecyclerView) recyclerView);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                Log.e("mSearchView", "TextChange --> " + s);
                return false;
            }
        });

        return true;
    }

6.人物详细界面

7.快捷菜单界面

8.势力情报界面

public class TableActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.table_main);

        Intent getIntent = getIntent();
        String type = getIntent.getStringExtra("type");
        setTitle(getText(R.string.app_title) + " - " + type);

        //设置表格标题的背景颜色
        ViewGroup tableTitle = (ViewGroup) findViewById(R.id.table_title);
        tableTitle.setBackgroundColor(Color.rgb(220, 220, 220));
        traverseViewGroup(tableTitle);

        TextView tv2 = (TextView)tableTitle.findViewById(R.id.text_goods_name);
        TextView tv3 = (TextView)tableTitle.findViewById(R.id.text_codeBar);
        TextView tv4 = (TextView)tableTitle.findViewById(R.id.text_num);
        TextView tv5 = (TextView)tableTitle.findViewById(R.id.text_curPrice);
        TextView tv6 = (TextView)tableTitle.findViewById(R.id.text_money);
        TextView tv7 = (TextView)tableTitle.findViewById(R.id.text_more);

        TableAdapter adapter = null;
        ListView tableListView = (ListView) findViewById(R.id.list);

        if(type.equals("城市"))
            adapter = new TableAdapter(this, FruitFactory.PAGE_CITY);
        else if(type.equals("官爵")) {
            adapter = new TableAdapter(this, FruitFactory.PAGE_GUANZHI);
            tv2.setText("名称");
            tv3.setText("统帅");
            tv4.setText("武力");
            tv5.setText("智力");
            tv6.setText("政治");
            tv7.setText("位階");
            tv7.setVisibility(View.VISIBLE);
        }
        else if(type.equals("宝物")) {
            adapter = new TableAdapter(this, FruitFactory.PAGE_BAOWU);
            tv2.setText("名称");
            tv3.setText("武将");
            tv4.setText("价值");
            tv5.setText("种类");
            tv6.setVisibility(View.GONE);
        }
        else if(type.equals("部落")) {
            adapter = new TableAdapter(this, FruitFactory.PAGE_BULUO);
            tv2.setText("名称");
            tv3.setText("農業");
            tv4.setText("商業");
            tv5.setText("兵科");
            tv6.setText("士氣");
            tv7.setText("指揮");
            tv7.setVisibility(View.VISIBLE);
        }
        else if(type.equals("战法")) {
            adapter = new TableAdapter(this, FruitFactory.PAGE_ZHANFA);
            tv2.setText("名称");
            tv3.setText("指揮");
            tv4.setText("攻擊");
            tv5.setText("防禦");
            tv6.setText("機動");
            tv7.setText("士氣");
            tv7.setVisibility(View.VISIBLE);
        }
        else return;

        tableListView.setAdapter(adapter);
    }

9.地图界面

技术分析:

  1. Gson读取json文件。
  2. Glide读取图片。
  3. 动态批量添加控件TextView和PhotoView。

10.参数设置界面

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <com.fxyublib.android.FxAppSangoKoei.MyPreferenceCategory
        android:key="prefCategory1"
        android:title="字体" >

        <ListPreference
            android:key="prefList_fontName"
            android:title="字体名称"
            android:entries="@array/fonts"
            android:entryValues="@array/fonts_value"
            android:dialogTitle="字体名称"
            android:defaultValue="SentyTEA.ttf"
            android:summary="新蒂下午茶体" />

        <!-- android:layout="@layout/layout_preffontsize" -->
        <ListPreference
            android:key="prefList_fontSize"
            android:title="字体大小"
            android:entries="@array/fonts2"
            android:entryValues="@array/fonts2_value"
            android:dialogTitle="字体大小"
            android:defaultValue="15"
            android:summary="中" />

    </com.fxyublib.android.FxAppSangoKoei.MyPreferenceCategory>

    <com.fxyublib.android.FxAppSangoKoei.MyPreferenceCategory
        android:key="prefCategory2"
        android:title="常规">

        <MultiSelectListPreference
            android:key="prefList_pageSet"
            android:title="势力情报数据菜单"
            android:entries="@array/detailpage"
            android:entryValues="@array/detailpage_value"
            android:defaultValue="@array/detailpage_value"
            android:summary="选择需要显示和隐藏的数据子菜单" />

    </com.fxyublib.android.FxAppSangoKoei.MyPreferenceCategory>

</PreferenceScreen>

后续

如果你觉得该方法或代码有一点点用处,可以给作者点个赞;╮( ̄▽ ̄)╭
如果你感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进。o_O???
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ ` )っ!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值