Android day_09 (Activity人品计算器案例)

1)两种意图(intent):

【1】开启自己应用的界面用显示意图

【2】开启其他应用(系统应用)的时候用隐示意图 例如电话拨号器

【3】显示意图更安全

1.隐示意图:

定义:通过指定一组动作或者数据

意图过滤器可以有多个,只要匹配上一个意图过滤器就可以

  //设置意图
        Intent intent = new Intent();
        //设置跳转动作
        intent.setAction("tlb");
        //设置Category
        intent.addCategory("android.intent.category.DEFAULT");
//        //设置数据
//        intent.setData(Uri.parse("tlb:"+110));
//        //设置数据类型
//        intent.setType("aa/bb");
        //注意:如果setData和setType一起使用  应该用下面这个方法
        intent.setDataAndType(Uri.parse("tlb:" + 110), "aa/bb");
        startActivity(intent);

2.显示意图:

定义:通过指定具体的包名和类名

 Intent intent = new Intent(this,Test2Activity.class);
        //intent.setClassName("com.tlb.newactivity", "com.tlb.newactivity.Test2Activity");
        startActivity(intent);

 2)人品计算器案例

主要思路:从MainActivity发送意图跳转到ResultActivity,并传递数据

public class MainActivity extends AppCompatActivity {
    private EditText et_name;
    private RadioGroup rg_group;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_name = findViewById(R.id.et_name);
        rg_group = findViewById(R.id.rg_group);

    }

    public void click(View view) {
        //获取用户名
        String name = et_name.getText().toString().trim();
        //判断name
        if (TextUtils.isEmpty(name)) {
            Toast.makeText(getApplicationContext(), "请输入姓名", Toast.LENGTH_LONG).show();
            return;
        }
        //判断选择的性别
        int radioButtonId = rg_group.getCheckedRadioButtonId();
        int sex = 0;
        switch (radioButtonId) {
            case R.id.rb_male://代表选择的是男
                sex = 1;
                break;
            case R.id.rb_female://代表选择的是女
                sex = 2;
                break;
            case R.id.rb_other://代表选择的是人妖
                sex = 3;
                break;

        }

        if (sex == 0) {
            Toast.makeText(getApplicationContext(), "请选择性别", Toast.LENGTH_LONG).show();
        }
        //用显示意图跳转界面
        Intent intent = new Intent(this, ResultActivity.class);
        //传递姓名
        intent.putExtra("name", name);
        //传递性别
        intent.putExtra("sex", sex);
        startActivity(intent);
    }
}
//ResultActivity
public class ResultActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局
        setContentView(R.layout.activity_result);
        TextView tv_name = findViewById(R.id.tv_name);
        TextView tv_sex = findViewById(R.id.tv_sex);
        TextView tv_result = findViewById(R.id.tv_result);
        TextView tv_df = findViewById(R.id.tv_df);
        //获取mainActivity传递的数据
        //获取开启此Activity的意图对象
        Intent intent = getIntent();
        String name = intent.getStringExtra("name");
        int sex = intent.getIntExtra("sex", 0);
        //根据name 和sex显示数据
        tv_name.setText(name);
        byte[] bytes = null;
        try {
            switch (sex) {
                case 1:
                    tv_sex.setText("男");
                    bytes = name.getBytes("utf-8");
                    break;
                case 2:
                    tv_sex.setText("女");
                    bytes = name.getBytes("gbk");
                    break;
                case 3:
                    tv_sex.setText("人妖");
                    bytes = name.getBytes("iso-8859-1");
                    break;
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        //计算人品结果

        int total = 0;
        for (byte b : bytes) {
            int num = b & 0xff;
            total += num;//1111 1111
        }
        int score = Math.abs(total) % 100;
        if (score > 90) {
            tv_result.setText("您的人品非常好,快去买彩票吧");
            tv_df.setText("得分:" + score);
        } else if (score > 80) {
            tv_result.setText("您的人品还可以,继续努力吧");
            tv_df.setText("得分:" + score);
        } else if (score > 60) {
            tv_result.setText("您的人品刚及格");
            tv_df.setText("得分:" + score);
        } else if (score > 50) {
            tv_result.setText("您的人品太次了,要多扶老奶奶啊");
            tv_df.setText("得分:" + score);
        } else {
            tv_result.setText("人品极差,素质极低");
            tv_df.setText("得分:" + score);
        }


    }
}

 

 

你可能感兴趣的:(Android)