【问题标题】:How to change ImageView of dice roller based on random result如何根据随机结果更改骰子滚轮的 ImageView
【发布时间】:2018-06-26 16:58:57
【问题描述】:

我正在为我的应用程序开发完成课程构建一个 Fate Dice 滚轮应用程序,但在根据结果更改骰子的 ImageView 时遇到问题。这是代码(滚轮在片段选项卡中):

public class RollDiceFragment extends Fragment {

    private Button btnRoll;
    private EditText et_rollDice;
    private ImageView iv_dice1, iv_dice2, iv_dice3, iv_dice4;
    Random random;


    public RollDiceFragment() {
    }


    public static RollDiceFragment newInstance() {
        RollDiceFragment fragment = new RollDiceFragment();
        return fragment;

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_rolldice, container, false);
        random = new Random();
        btnRoll = rootView.findViewById(R.id.btnRoll);
        et_rollDice = rootView.findViewById(R.id.et_rollDice);
        iv_dice1 = rootView.findViewById(R.id.iv_dice1);
        iv_dice2 = rootView.findViewById(R.id.iv_dice2);
        iv_dice3 = rootView.findViewById(R.id.iv_dice3);
        iv_dice4 = rootView.findViewById(R.id.iv_dice4);

        btnRoll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RollDiceFragment.this.rollDice();
            }
        });

        return rootView;




    }

    private void rollDice(){
        int d1 = this.random.nextInt(3) -1;
        int d2 = this.random.nextInt(3) -1;
        int d3 = this.random.nextInt(3) -1;
        int d4 = this.random.nextInt(3) -1;


        String print = (((BuildConfig.FLAVOR + addResult(d1)) + addResult(d2)) + addResult(d3)) + addResult(d4);
        int diceSum = ((d1 + d2) + d3) + d4;
        if (diceSum > 0){
            this.et_rollDice.setText("+" + Integer.toString(diceSum));
        }else {
            this.et_rollDice.setText(Integer.toString(diceSum));
        }

    }

    public String addResult(int i){
        if (i == 1){
            return "+";
        }
        if (i == 0){
            return "0";
        }
        return "-";
    }

}

随机滚轮在模拟器上运行良好,结果显示在 editText 行中。我只想根据每个骰子的结果更改图像。如果骰子显示“-”,则显示的图像应为 diceminus.jpg.... 任何帮助将不胜感激 =)

【问题讨论】:

    标签: java android imageview dice


    【解决方案1】:

    问题是您将 int 传递给 setText 方法。

    在 else 情况下,将其更改为使用带有 String 作为参数的 setText 重载:

    this.et_rollDice.setText("" + Integer.toString(diceSum));
    

    【讨论】:

    • 但这将如何使“图像 [...] 根据每个骰子的结果发生变化”?毕竟这就是问题所在
    • 是的,如果我不够详细,抱歉。我有四个骰子的四个图像视图。并且图像应该随着单个骰子结果而变化 - 因此,如果骰子显示“+”,则图像应该是 diceplus.jpg,如果显示“0”,则应该是 dicezero.jpr,如果结果是“-”它应该是 diceminus.jpg。我在这里没有任何代码,因为我尝试了两种方法,但它们都不起作用,所以我删除了它们。
    【解决方案2】:

    我找到了答案,所以我会在这里发布,以防有​​一天其他人需要代码 =)

    开关 (d1){ 情况1: iv_dice1.setImageResource(R.drawable.diceminus); 休息; 案例0: iv_dice1.setImageResource(R.drawable.dicezero); 休息; 案例+1: iv_dice1.setImageResource(R.drawable.diceplus); 休息; }

        switch (d2){
            case -1:
                iv_dice2.setImageResource(R.drawable.diceminus);
                break;
            case 0:
                iv_dice2.setImageResource(R.drawable.dicezero);
                break;
            case +1:
                iv_dice2.setImageResource(R.drawable.diceplus);
                break;
        }
    
        switch (d3){
            case -1:
                iv_dice3.setImageResource(R.drawable.diceminus);
                break;
            case 0:
                iv_dice3.setImageResource(R.drawable.dicezero);
                break;
            case +1:
                iv_dice3.setImageResource(R.drawable.diceplus);
                break;
        }
    
        switch (d4){
            case -1:
                iv_dice4.setImageResource(R.drawable.diceminus);
                break;
            case 0:
                iv_dice4.setImageResource(R.drawable.dicezero);
                break;
            case +1:
                iv_dice4.setImageResource(R.drawable.diceplus);
                break;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 2018-09-24
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多