Android 学习之路 四大组件之Activity1(内置人品计算器)

前言:

终于到了四大组件,打掉前面的“小怪”,来到安卓的核心boss,开心。

1 创建一个新的Activity 

 

    1>如果你想让你的Activity有多个启动图标 需要这样配置

<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

    2>Activity节点下的icon和label 可以和Application节点的icon和label不一样 如果没有配置activity下的icon和label属性 默认使用Application下的配置。

2.隐式意图

通过指定一组动作或者数据 开启activity 一般多用来跳转系统上层页面(对应其activity的过滤器的配置)

3.显式意图(用的较多)

两种调用方法 多用第一种

 //1.
Intent intent = new Intent(this,Test2Activity.class);

 //2.packageName 当前应用的包名 从清单列表中找 className要启动的activity页面

  intent.setClassName("com.zkcd.a2_activity","com.zkcd.a2_activity.Test2Activity");

 通过指定具体的包名,类名 开启activity

  (1)显示意图更加安全一些 

  (2)开启自己应用的界面用显示意图(不需要配置意图过滤器) 

  (3)隐式意图一般开启系统应用(电话拨号器 短信的发送器等等)的界面

4.人品计算器(写一个小案例使用上面所学)

很有意思的一个小案例,在学习中寻找乐趣,可谓学海无涯苦作舟呀~~ 漫漫长路

模仿网页小游戏人品计算器 逻辑很简单,主要实现把数据从第一个activity传递到第二个activity并显示出来。

MainActivity

public class MainActivity extends AppCompatActivity {

    private EditText et_name;
    private RadioGroup rG;

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

    public void bt_RP(View v) {
        //获得姓名
        String name = et_name.getText().toString().trim();
        if(TextUtils.isEmpty(name)){
            Toast.makeText(getApplicationContext(),"兄弟输入名字呀",1).show();
            return;
        }
        //获得所勾选的单选框
        int id = rG.getCheckedRadioButtonId();
        int sex = 0;
        switch (id) {

            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(),"你是男是女还是人妖呀,勾选呀",1).show();
            return;
        }

        //创建一个意图
        Intent intent = new Intent(this,ContentActivity.class);
        //把数据传递过去
        intent.putExtra("name",name);
        intent.putExtra("sex",sex);
        startActivity(intent);
    }
}
 

ContentActivity

public class ContentActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置布局
        setContentView(R.layout.activity_content);
        TextView tv_name = findViewById(R.id.tv_name);
        TextView tv_sex = findViewById(R.id.tv_sex);
        TextView tv_content = findViewById(R.id.tv_content);
        //获得跳转此页面的intent
        Intent intent = getIntent();
        //用什么类型存储数据 就用什么方法获得数据
        String name = intent.getStringExtra("name");
        int sex = intent.getIntExtra("sex",0);
        tv_name.setText(name);
        switch (sex){
            case 1:
                tv_sex.setText("男");
                break;
            case 2:
                tv_sex.setText("女");
                break;
            case 3:
                tv_sex.setText("人妖");
                break;
        }
        int total=0;
        byte[] bytes = name.getBytes();
        for (byte b: bytes){
            //计算机存储原理  计算机内的存储都是利用二进制的补码进行存储的。
            //正数的补码就是自身 负数的补码是原码的反码+1
            // 从byte转换成int 8位转换成32位 低位不变 高位补1
            //与上0xff 可以保持自身补码的一致性 0xff二进制就是1111 1111 高位补0
            //byte类型的数字要&0xff再赋值给int类型,其本质原因就是想保持二进制补码的一致性。
            int score=b&0xff;
            total+=score;
        }
        System.out.println(total);
        int abs = Math.abs(total)%100;
        if(abs>90){
            tv_content.setText("您的人品超级棒,兄嘚");
        }else if (abs>50){
            tv_content.setText("您的人品一般般哦,兄嘚");
        }else if (abs>20){
            tv_content.setText("您的人品有点次哦,兄嘚");
        }else{
            tv_content.setText("您的人品不谈了,兄嘚");
        }


    }
}

其中的小细节就是计算名字人品的逻辑。代码中我进行了很详细的概述。(布局文件就不上了,后边还有大boss)

效果图:

选了一个俏皮的小猪 作为app图标

------------------------------------------------------------------END------------------------------------------------------------------------------------------

未完请移步下篇 activity2

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值