多页面开发
来源:互联网 发布:淘宝神评论 编辑:程序博客网 时间:2024/06/06 01:23
1.清单文件介绍
1.1如果想让你的应用程序有多个启动入口应该做如下配置:
<activity android:name=".Main2Activity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
1.2 application节点下的icon和label可以和activity节点下不一样 如果activity自己配置了icon和label属性使用自己的.
2.意图
1.显示意图:通过设置具体的包名类名开启页面
2.隐式意图:通过设置一组动作或者数据开启页面
3.思考什么时候用显示 什么时候用隐式:开系统应用的页面用隐式 自己应用页面用显示
3.人品计算器
功能:计算人品
代码实现过程:
1.实现UI
2.mainActivity代码如下:
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); //1.找的控件 et_name = (EditText) findViewById(R.id.et_name); rg_group = (RadioGroup) findViewById(R.id.rg_group); } //点击按钮 获取用户输入的姓名 对人品进行计算 public void click(View view) { //1.获取姓名 String name = et_name.getText().toString().trim(); //2.判断name是否为空 if (TextUtils.isEmpty(name)){ Toast.makeText(this, "name不能为空", Toast.LENGTH_SHORT).show(); return; } //3.判断用户是否选择了性别 int sex = 0; int checkedRadioButtonId = rg_group.getCheckedRadioButtonId(); switch (checkedRadioButtonId){ case R.id.rb_male: //代表选择的是男 sex = 1; break; case R.id.rb_female: //代表选择的是女 sex = 2; break; case R.id.rb_other: //代表选择的是人妖 sex = 3; break; } //4.判断性别是否被勾选 if (sex == 0){ Toast.makeText(this, "请选择性别", Toast.LENGTH_SHORT).show(); return; } //5.实现页面跳转 Intent intent = new Intent(this, ResultActivity.class); //6.当跳转页面之前实现数据传递 map(键:值) intent.putExtra("name",name); intent.putExtra("sex",sex); //7.实现了页面跳转 startActivity(intent); }}
3.结果页面代码如下:
public class ResultActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); //1.找的控件 TextView tv_name = (TextView) findViewById(R.id.tv_name); TextView tv_sex = (TextView) findViewById(R.id.tv_sex); TextView tv_result = (TextView) findViewById(R.id.tv_result); //2.先获取上一个页面传递的数据 数据是怎么传的就怎么取 传递的是什么类型 就对应取什么类型 Intent intent = getIntent(); //返回开启此页面的意图对象 String name = intent.getStringExtra("name"); int sex = intent.getIntExtra("sex", 0); //3.更新数据 tv_name.setText(name); switch (sex){ case 1: //代表选择的是男 tv_sex.setText("男"); break; case 2: //代表选择的是女 tv_sex.setText("女"); break; case 3: //代表选择的是人妖 tv_sex.setText("人妖"); break; } //4.随机生成一个分 Random random = new Random(); int score = random.nextInt(101); if (score> 90){ tv_result.setText("您家祖坟都冒青烟了 人品很好"); }else if (score > 75){ tv_result.setText("您的人品还可以,当仍要努力"); }else if (score > 60){ tv_result.setText("您的人品刚刚及格"); }else{ tv_result.setText("你的人品太差了。你应该有干坏事的嗜好吧?"); } }}
4.短信大全案例
public class MainActivity extends AppCompatActivity { String[] objects = {"今天的风儿轻柔无比,今天的花儿香飘万里;今天的鸟儿十分欢喜,今天的云儿满载笑意;今天的事儿万分顺利,今天的人儿如此甜蜜。所有美..." ,"丫头,生活是你自己的,你哭它就对你哭,你笑它就对你笑。转眼,又是一年,你的生日即将来到。今年,还是少不了我对你的祝福,我忍不住..." ,"世界上最动听的声音,是妈妈声声的呼唤;世界上最温暖的笑容,是妈妈温暖的笑脸。妈妈,原谅生日时我不能陪在您身边,在这个日子里,我..." ,"今天是你的生日,祝你:发财势头如快马加鞭,一日千里;发展速度如滔滔江水,势不可挡;好事发生如雨后春笋,络绎不绝;祝福发送如比赛..."}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1,找的listview ListView lv = (ListView) findViewById(R.id.lv); //2.把数组里面的内容展示到listview上 lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(),R.layout.item,R.id.tv,objects)); //3.点击listview的条目跳转到系统发送短信页面 button: lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { //当list的条目点击的时候执行 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //4.把选中的条目的数据取出来 数据在哪里存着 就取哪里取 String data = objects[position]; //5.跳转到发送短信页面 显示意图 隐式 Intent intent = new Intent(); //5.1 匹配意图过滤器 intent.setAction("android.intent.action.SEND"); intent.addCategory("android.intent.category.DEFAULT"); intent.setType("text/plain"); //5.2 把data数据传递到短信发送页面 intent.putExtra("sms_body",data); //6.启动意图 startActivity(intent); } }); }
5.短信发送器
2.3 共同点:都是有2个页面 都是从A页面跳转到B页面 并且把A页面的数据传递到B页面
短信发送器也是2个页面,A页面开启B页面,当B页面关闭的时候,把B页面的数据返回给A
代码实现过程
1.画UI
2.mainActivity逻辑
public class MainActivity extends AppCompatActivity { private EditText et_context; private EditText et_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1.找的控件 et_context = (EditText) findViewById(R.id.et_content); et_number = (EditText) findViewById(R.id.et_number); } //点击按钮跳转到ContactActivity页面 public void add(View view) { Intent intent = new Intent(this, ContactActivity.class);// startActivity(intent); //当开启一个页面 并且还需要开启这个页面返回的数据 这时候应该使用下面这个方法 startActivityForResult(intent,1); } //点击按钮跳转到 短信模板页面 public void click(View view) { Intent intent = new Intent(this, SmsTemplateActivity.class); startActivityForResult(intent,2); } //点击按钮实现发送短信功能 public void send(View view) { //1.获取发送的号码和发送的内容 String content = et_context.getText().toString().trim(); String number = et_number.getText().toString().trim(); //2.获取smsmanager 短信管理者实例 SmsManager smsmanager = SmsManager.getDefault(); //3.对发送的内容进行切割 ArrayList<String> smss = smsmanager.divideMessage(content); for (String sms : smss) { //4.发送短信 smsmanager.sendTextMessage(number,null,sms,null,null); } } //当启动的页面调用finish方法的时候执行 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == 10){ //说明数据是从联系人页面返回 //1.获取联系人页面返回的数据 String phone = data.getStringExtra("phone"); //2.把phone的数据展示到EditText上 et_number.setText(phone); }else if (resultCode == 20){ //1.获取短信模板页面返回的数据 String smsContent = data.getStringExtra("smsContent"); //2.把smsContent数据展示到EditText控件上 et_context.setText(smsContent); } }}
3.联系人页面逻辑:
package com.itheima.smssend;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.format.Formatter;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import org.w3c.dom.Text;import java.util.ArrayList;import java.util.List;public class ContactActivity extends AppCompatActivity { private List<Person> lists; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); //1.找的listview 用来展示系统的联系人 ListView lv_contact = (ListView) findViewById(R.id.lv_contact); //2.展示联系人信息 先取出联系人的数据 怎么取(暂时取不了 内容提供者 今天先模拟) lists = new ArrayList<>(); for (int i = 0; i <= 10; i++) { Person person = new Person(); person.setName("zhangsan"+i); person.setPhone("110"+i); lists.add(person); } //3.把集合里面的数据展示到listview上 lv_contact.setAdapter(new MyAdapter()); //4.给listview的条目设置点击事件 lv_contact.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //5.点击那个条目就获取哪个条目的号码 String phone = lists.get(position).getPhone(); //5.1创建意图对象用来传递数据 Intent intent = new Intent(); intent.putExtra("phone",phone); //5.2 把数据返回给调用者 setResult(10,intent); //6.把当前页面关闭 并且把数据返回给上一个页面 finish(); // 谁启动你就把数据返回给谁 通过onActivityResult方法把数据返回 } }); } //定义listview适配器 class MyAdapter extends BaseAdapter{ @Override public int getCount() { return lists.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { //0.对listview优化 View view; if (convertView == null){ view = View.inflate(getApplicationContext(),R.layout.item,null); }else{ view = convertView; } //1.找到条目的控件 TextView tv_name = (TextView) view.findViewById(R.id.tv_name); TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone); //2.把集合里面的数据展示出来 tv_name.setText(lists.get(position).getName()); tv_phone.setText(lists.get(position).getPhone()); return view; } }}
4.短信模板页面逻辑
public class SmsTemplateActivity extends AppCompatActivity { String objects[] = {"我在开会,请稍后联系","我在吃饭,请稍后联系","我在睡觉,请稍后联系","我在打代码,请稍后联系"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms_template); //1.找的控件 ListView listView = (ListView) findViewById(R.id.lv); listView.setAdapter(new ArrayAdapter<String>(getApplicationContext(),R.layout.smstemplate_item,R.id.textView,objects)); //2.给listview设置点击事件 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //3.把点击的条目的数据取出来 String smsContent = objects[position]; //4.把模板内容返回给上一个页面 Intent intent = new Intent(); intent.putExtra("smsContent",smsContent); //5.把数据返回给调用者 setResult(20,intent); //6.调用finsih方法 把当前页面关闭 finish(); } }); }}
6.Activity的生命周期
1.onCreate方法 当activity第一次创建的时候调用
2.onDestory方法 当activity销毁的时候调用
3.onStart方法 当activity变成可视(能够用人的肉眼看的见页面)
4.onStop方法 当activity不可见的时候调用
5.onResume方法 说明用户可以在页面上进行交互了(界面上的按钮被点了)
6.onPause 方法 说明用户不可以和页面交互了
7.onRestart方法 当页面重新启动
阅读全文
0 0
- 多页面开发
- Android多页面开发
- 多页面开发
- 多页面开发(Activity)
- vue多页面多路由开发环境
- IOS Multipage(多页面)程序开发,UITabBarController
- webpack集成bootstrap进行多页面开发
- [绍棠] UIPageViewController多页面混合开发
- webpack+vue 实现多页面开发
- webwork+jstl开发页面
- 网站开发 ---页面
- 销售管理页面开发
- 前台页面开发规范
- 移动开发页面
- eos开发页面标签
- 页面开发,挺不简单
- 开发 页面 分页模板
- ios开发启动页面
- jquery ajax 请求415 400 异常处理
- android socket长连接
- 大数据24小时:澳洲证交所拟用区块链完成结算清算,浪潮集团跻身全球服务器厂商前三
- 归并排序
- 全选 取消全选
- 多页面开发
- AsyncTask源码解析
- Guava Collections使用介绍[超级强大]
- Jps中出现process information unavailable
- Windows环境搭建mongodb3.X
- MYSQL explain详解
- 使用百度统计工具对php网站进行事件埋点追踪
- Spring的非强制注入
- 《算法导论》学习笔记之Chapter10基本数据结构---栈的数组实现