小品-三句半-背诵apk

1. 需求

公司年会要求每个部门出一个节目,我们的界面是小品《三句半》,4个人,每人说一句,奈何台词太长了,故写了个背台词的demo.最终年会10个节目中,获得第二名,很开心。

1.1 apk 下载路径

https://github.com/sufadi/Sketch_Programmer_Recitation/tree/master/apkFile

1.2 源码下载路径

https://github.com/sufadi/Sketch_Programmer_Recitation

1.3 简单的UI图

在这里插入图片描述

2. 台词

arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="actor_name">
        <item>当前角色:甲</item>
        <item>当前角色:乙</item>
        <item>当前角色:丙</item>
        <item>当前角色:丁</item>
    </string-array>

    <string-array name="index_1">
        <item>1.江湖人称</item>
        <item>2.初次来演三句半</item>
        <item>3.今日主题有亮点</item>
        <item>4.读书求学在外地</item>
        <item>5.码农就业压力大</item>
        <item>6.深圳户口忒紧张</item>
        <item>7.程序员,脑洞大</item>
        <item>8.你若借钱程序员</item>
        <item>9.程序写得好</item>
        <item>10.程序写的秒</item>
        <item>11.代码写下千万行</item>
        <item>12.简单易用界面好</item>
        <item>13.半夜还为需求忙</item>
        <item>14.开水泡面管三餐</item>
        <item>15.十年生死两茫茫</item>
        <item>16.常年累月公司住</item>
        <item>17.新知旧识脑里装</item>
        <item>18.终身大事无心管</item>
        <item>19.好不容易有对象</item>
        <item>20.工资一点泪成行</item>
        <item>21.代码一点都不差</item>
        <item>22.年复一年特别忙</item>
        <item>23.每个职业都伟大</item>
        <item>24.今年新春联欢会</item>
        <item>25.心情开朗事事好</item>
        <item>26.精彩节目排着队</item>
    </string-array>

    <string-array name="index_2">
        <item>1.通讯四帅</item>
        <item>2.腿打哆嗦手发颤</item>
        <item>3.诸位关注尝尝鲜</item>
        <item>4.it 民工真不易</item>
        <item>5.海投过后等电话</item>
        <item>6.抓紧时间寄三方</item>
        <item>7.字符代码会说话</item>
        <item>8.超过1000一点点</item>e
        <item>16.代码程序写到吐</item>
        <item>17.编程技术日日强</item>
        <item>18.至今还是单身汉</item>
        <item>19.恋人分别各一方</item>
        <item>20.怎能买起商品房</item>
        <item>21.工资涨得不够花</item>
        <item>22.奔波劳累在他乡</item>
        <item>23.自黑调侃逗大家</item>
        <item>24.喝酒千杯不怕醉</item>
        <item>25.阳光普照财神到</item>
        <item>26.哥几个也很累</item>
    </string-array>

    <string-array name="index_3">
        <item>1.今日高兴</item>
        <item>2.如有雷同你别喊</item>
        <item>3.哥们几个谈什么</item>
        <item>4.面黄饥廋眼呆滞</item>
        <item>5.千呼万唤来offer</item>
        <item>6.所有手续都办妥</item>
        <item>7.埋头苦干不吹嘘</item>
        <item>8.必须凑个好数字</item>
        <item>9.升值加薪快</item>
        <item>10.底薪二万五</item>
        <item>11.管他何时被触发</item>
        <item>12.老板还有新需求</item>
        <item>13.嘴上笑嘻嘻</item>
        <item>14.熬夜熬成大熊猫</item>
        <item>15.程序何时能写完</item>
        <item>16.30还是单身狗</item>
        <item>17.弹出窗口想自杀</item>
        <item>18.相亲网站全注册</item>
        <item>19.奈何真情守不住</item>
        <item>20.一夜涨价20W</item>
        <item>21.人生先定小目标</item>
        <item>22.何时何事最欣慰</item>
        <item>23.改变世界在指尖</item>
        <item>24.管他明年累不累</item>
        <item>25.中了大奖开礼包</item>
        <item>26.下场还要加班去</item>
    </string-array>

    <string-array name="index_4">
        <item>1.开整</item>
        <item>2.谁敢</item>
        <item>3.程序员</item>
        <item>4.还油腻</item>
        <item>5.拿下</item>
        <item>6.棒棒</item>
        <item>7.但脱发</item>
        <item>8.(1024元)</item>
        <item>9.挺好</item>
        <item>10.呵呵笑</item>
        <item>11.不慌</item>
        <item>12.马上要</item>
        <item>13.心理 NMB</item>
        <item>14.黑眼圈</item>
        <item>15.到天亮</item>
        <item>16.麻木</item>
        <item>17.找不到对象</item>
        <item>18.难办</item>
        <item>19.凉凉</item>
        <item>20.又迷茫</item>
        <item>21.做植发</item>
        <item>22.年终奖</item>
        <item>23.牛逼啊</item>
        <item>24.吐完再睡</item>
        <item>25.我靠,香皂</item>
        <item>26.撤退</item>
    </string-array>
</resources>

3. 调用方法

package com.fadi.su.recitedemo;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatSpinner;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private final static int ACTOR_0 = 0;
    private final static int ACTOR_1 = 1;
    private final static int ACTOR_2 = 2;
    private final static int ACTOR_3 = 3;

    private final static int DEFAULT_ACTOR = ACTOR_1;

    private static int curIndex = 0;
    private static int curActorIndex = 0;
    private String[] list1, list2, list3, list4, actors;

    private TextView tv_show, tv_tip;
    private AppCompatSpinner sp_actor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initViews();
        initValues();
        initListeners();
    }

    private void initViews() {
        tv_show = findViewById(R.id.tv_show);
        tv_tip = findViewById(R.id.tv_tip);
        sp_actor = findViewById(R.id.sp_actor);
    }

    private void initValues() {
        list1 = getResources().getStringArray(R.array.index_1);
        list2 = getResources().getStringArray(R.array.index_2);
        list3 = getResources().getStringArray(R.array.index_3);
        list4 = getResources().getStringArray(R.array.index_4);
        actors = getResources().getStringArray(R.array.actor_name);

        curActorIndex = DEFAULT_ACTOR;
        sp_actor.setSelection(DEFAULT_ACTOR);
    }

    private void initListeners() {
        tv_show.setText(list1[curIndex]);
        tv_show.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (curActorIndex != ACTOR_0) {
                    if(curIndex == list1.length -1) {
                        curIndex = 0;
                    } else {
                        curIndex++;
                    }

                    updateTopText();
                } else {
                    tv_show.setText(list1[curIndex]);
                }
            }
        });

        tv_tip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (curActorIndex != ACTOR_0) {
                    updateBottomText();
                } else {
                    if(curIndex == list1.length -1) {
                        curIndex = 0;
                    } else {
                        curIndex++;
                    }

                    tv_show.setText("本句 ???");
                    updateBottomText();
                }
            }
        });

        sp_actor.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                curActorIndex = position;
                updateTopText();
                if (curActorIndex != ACTOR_0) {
                    tv_tip.setText("下一句");
                } else {
                    updateBottomText();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }


    @Override
    protected void onResume() {
        super.onResume();
        updateUI();
    }

    private void updateUI() {
        updateTopText();
        updateBottomText();
    }

    private void updateTopText() {
        StringBuilder sb = new StringBuilder();

        switch (curActorIndex) {
            case ACTOR_0:
                tv_show.setText("本句 ???");
                break;
            case ACTOR_1:
                tv_show.setText(list1[curIndex]);
                tv_tip.setText("下一句");
                break;
            case ACTOR_2:
                sb.append(list1[curIndex]);
                sb.append("\n");
                sb.append(list2[curIndex]);

                tv_show.setText(sb.toString());
                tv_tip.setText("下一句");
                break;
            case ACTOR_3:
                sb.append(list1[curIndex]);
                sb.append("\n");
                sb.append(list2[curIndex]);
                sb.append("\n");
                sb.append(list3[curIndex]);

                tv_show.setText(sb.toString());
                tv_tip.setText("下一句");
                break;
        }

    }

    private void updateBottomText() {
        StringBuilder sb = new StringBuilder();

        switch (curActorIndex) {
            case ACTOR_0:
                sb.append(list2[curIndex]);
                sb.append("\n");
                sb.append(list3[curIndex]);
                sb.append("\n");
                sb.append(list4[curIndex]);

                tv_tip.setText(sb.toString());
                break;
            case ACTOR_1:
                sb.append(list2[curIndex]);
                sb.append("\n");
                sb.append(list3[curIndex]);
                sb.append("\n");
                sb.append(list4[curIndex]);

                tv_tip.setText(sb.toString());
                break;
            case ACTOR_2:
                sb.append(list3[curIndex]);
                sb.append("\n");
                sb.append(list4[curIndex]);

                tv_tip.setText(sb.toString());
                break;
            case ACTOR_3:
                sb.append(list4[curIndex]);

                tv_tip.setText(sb.toString());
                break;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值