前言:
终于到了四大组件,打掉前面的“小怪”,来到安卓的核心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------------------------------------------------------------------------------------------