array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 安卓第九天笔记-Activity - 爱码网

1.创建Activity

一个界面对应一个activity

 

创建一个Activity

 1.写一个JAVA类,继承Activity

publicclass CalcActivity extends Activity {

 2.为这个Activity写一个布局文件

 

 3.在Activity中重写OnCreate()方法,并设置显示的内容setContentView(R.layout.xxx)xxx表示布局文件的名称

4.在Manifest.xml文件中为Activity注册

<activity android:name="com.itheima.rp.CalcActivity"></activity>

 

2.人品计算器

 

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".LogoActivity" >

 

    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:src="@drawable/logo"/>

 

</RelativeLayout>

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

 

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="10dp"

        android:text="人品计算器"

        android:textColor="#66ff0000"

        android:textSize="32sp" />

 

    <EditText

        android:id="@+id/et_name"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="请输入您的姓名" />

   

   

    <Button

        android:onClick="calc"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="计算"/>

 

    <TextView

        android:id="@+id/tv_result"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"/>

   

</LinearLayout>

 

 

LogoActivity

 

 

/**

 * Logo界面

    

 * @author 刘楠

 *

 * 2016-2-25下午6:47:07

 */

public class LogoActivity extends Activity {

 

     @Override

     protected void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_logo);

         //打开后显示的LOGO界面

         new Thread(){

              public void run() {

                   //显示5秒后连接到切换到下一个Activity

                   SystemClock.sleep(5000);

                  

                   startActivity(new Intent(LogoActivity.this, CalcActivity.class));

                   //关闭掉这个Activity不然后退就又回到Logo界面了

                   finish();

              };

         }.start();

     }

}

 

 

CalcActivity

/**

 * 创建一个Activity

 * 1.写一个JAVA类,继承Activity

 * 2.为这个Activity写一个布局文件

 * 3.在Activity中重写OnCreate()方法,并设置显示的内容setContentView(R.layout.xxx)xxx表示布局文件的名称

      

 * @author 刘楠

 *

 * 2016-2-25下午6:33:59

 */

public class CalcActivity extends Activity {

 

       private EditText et_name;

       private TextView tv_result;

 

 

       @Override

       protected void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              //设置要显示的内容布局文件

              setContentView(R.layout.activity_calc);

             

              et_name = (EditText) findViewById(R.id.et_name);

              tv_result = (TextView) findViewById(R.id.tv_result);

       }

      

      

       /**

        * 计算人品

        * @param v

        */

       public void calc(View v){

             

             

             

              //获取名称

              String name = et_name.getText().toString().trim();

              if(TextUtils.isEmpty(name)){

                    

                     Toast.makeText(this, "姓名不能为空", Toast.LENGTH_SHORT).show();

                    

                     return;

              }

             

              //不为空就开始计算

             

              byte[] bytes = name.getBytes();

              //结果

              int sum=0;

              for (byte b : bytes) {

                     int tmp=b&0xff;

                     sum+=tmp;

              }

             

              //开始计算人品

              int rp=sum/100;

              if (rp>9) {

                     tv_result.setText("人名:"+name+"--->人品:"+rp+"===人品帅到掉渣,当世的活菩萨");

              }else if(rp>6){

                     tv_result.setText("人名:"+name+"--->人品:"+rp+"===一般一般世界第三,");

              }else{

                     tv_result.setText("人名:"+name+"--->人品:"+rp+"===上辈子没有干坏事,好好活着");

              }

             

       }

}

 

 

 

计算和结果都在一个界面完成的,

下面再加一个界面只用于显示结果

并把图片带过去

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

 

       <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="结果显示"/>

   

    <ImageView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"/>

 

    <TextView

        android:id="@+id/tv_result"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"/>

   

</LinearLayout>

 

 

 

Activity

 

 

更改CalcActivity

//开始计算人品

              String str;

              int rp=sum/100;

              if (rp>9) {

                     str="人名:"+name+"--->人品:"+rp+"===人品帅到掉渣,当世的活菩萨";

              }else if(rp>6){

                     str="人名:"+name+"--->人品:"+rp+"===一般一般世界第三,";

              }else{

                     str="人名:"+name+"--->人品:"+rp+"===上辈子没有干坏事,好好活着";

              }

             

              // 发送数据到另外一个Activity

              Intent  intent = new Intent();

             

              intent.setClass(this, ResultActivity.class);

             

              //添加数据字符串

              intent.putExtra("data", str);

              //把图片的ID放时去

              intent.putExtra("rp", R.drawable.logo);

             

             

              startActivity(intent);

 

结果页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

 

       <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="结果显示"/>

   

    <ImageView

        android:id="@+id/iv_display"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"/>

 

     <TextView

         android:id="@+id/tv_result"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="结果显示"/>

   

   

</LinearLayout>

 

 

/**

 * 创建一个Activity

 * 1.写一个JAVA类,继承Activity

 * 2.为这个Activity写一个布局文件

 * 3.在Activity中重写OnCreate()方法,并设置显示的内容setContentView(R.layout.xxx)xxx表示布局文件的名称

      

 * @author 刘楠

 *

 * 2016-2-25下午6:33:59

 */

public class ResultActivity extends Activity {

 

 

       private TextView tv_result;

      

       private ImageView iv_display ;

 

 

       @Override

       protected void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              //设置要显示的内容布局文件

              setContentView(R.layout.activity_result);

 

              tv_result = (TextView) findViewById(R.id.tv_result);

             

              iv_display = (ImageView) findViewById(R.id.iv_display);

             

              //获取Intent

              Intent intent = getIntent();

              //获取数据

              String data = intent.getStringExtra("data");

              //设置值

              tv_result.setText(data);

             

              //获取图片

              int rpMap = intent.getIntExtra("rp", 0);

              //设置图片

              iv_display.setImageResource(rpMap);

             

       }

      

 

}

 

3.使用Intent传递多种数据

 

3.1传递简单数据

Intent intent = new Intent();

              intent.setClass(this, SecondActivity.class);

              //传递普通数据

             

              intent.putExtra("name", "张三");

              intent.putExtra("age", 18);

              intent.putExtra("flag", true);

             

              startActivity(intent);

 

3.2传递复杂数据

 

1.传递一个对象,对象的类要实现Parcelable

 

       Intent intent = new Intent();

              intent.setClass(this, SecondActivity.class);

              //传一个对象

              //前提 是person实现了Parcelable接口

              Person person = new Person("刘楠", 30);

             

              intent.putExtra("person", person);

             

              startActivity(intent);

 

获取

Intent intent = getIntent();

             

              //获取数据n

              String name = intent.getStringExtra("name");

              int age = intent.getIntExtra("age", 2);

              boolean flag = intent.getBooleanExtra("flag", false);

                    

              Person p=intent.getParcelableExtra("person");

 

              Toast.makeText(this,p.toString(), Toast.LENGTH_SHORT).show();

 

 

实际上只要让javaBean实现Serializable 接口就可以了,不管是传递单个对象,或者是传递一个集合,都没问题。

4. 启动界面的两种方式

4.1显示意图

只要指定上下文,和具体的类就可以跳转

 

> 能够直接知道跳转的界面

 

      

             注册:

                            <activity android:name="com.itheima.start.Activity01"></activity>

                   跳转:

 

                            Intent intent = new Intent(this , Activity01.class);

 

                            startActivity(intent);

 

 

                   作用: 一般是启动自己程序的界面,其他程序的界面通过这种方式无法启动

 

                   如果使用了显式手法注册,还想被其他应用程序打开, 那么可以在activity标签里面,加上

                  android:exported="true"

 

 

4.2 隐匿意图

 不知道要打开的界面是什么样子的,只有运行了才知道

要指定Action与data才可以

/**

       * 显示意图打开Activity02

       * @param v

       */

      public void click1(View v){

           Intent intent = new Intent();

          

           intent.setClass(this, SencondActivity.class);

          

           startActivity(intent);

      }

 

<activity android:name="com.itheima.intentstart.SencondActivity"></activity>

 

 

隐匿意图要指定Action,

<!--隐匿意图  -->

        <activity android:name="com.itheima.intentstart.SencondActivity">

            <intent-filter >

                <!--Action  -->

                <action android:name="com.itheima.intentstart.Second"/>

                <!--设置为默认的  -->

                <category android:name="android.intent.category.DEFAULT"/>

            </intent-filter>

        </activity>

 

 

 

/**

       * 隐式意图打开Activity02

       *

       * @param v

       */

      public void click2(View v) {

           Intent intent = new Intent();

 

           intent.setAction("com.itheima.intentstart.Second");

          

           intent.addCategory("android.intent.category.DEFAULT");

 

           startActivity(intent);

      }

 

 

4.3 参数

作用: 跳转其他的应用程序界面,或者是自己的应用程序界面想被其他的程序打开

      详细参数:

  •                  action:  动作
  •                  category  分类
  •                  data: 指定数据,  一般关注两个:scheme  和 mimetype

 

  •                  android:scheme="itheima" android:path="www.itheima" android:mimeType="text/plain"

 

 

4.4隐匿意图打打SMS

  <Button

        android:onClick="shareSms"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="打开手机短信" />

 

    

 /**

      * 隐匿意图 打开手机SMS界面

      * 源码

      *   <intent-filter>

                <action android:name="android.intent.action.VIEW" />

                <action android:name="android.intent.action.SENDTO" />

                <category android:name="android.intent.category.DEFAULT" />

                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="sms" />

                <data android:scheme="smsto" />

            </intent-filter>

      * @param v

      */

     public void shareSms(View v){

        

         Intent intent = new Intent();

        

         intent.setAction("android.intent.action.VIEW");

         intent.addCategory("android.intent.category.BROWSABLE");

         intent.setData(Uri.parse("sms:"));

         //设置数据

    

         intent.putExtra("sms_body", "这是要传过去的内容");

        

         startActivity(intent);       

     }

 

 

点击按键,显示界面

 

 

4.5 打开浏览器

 

   

  /**打开系统的浏览器

      * <intent-filter>

                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />

                <data android:scheme="https" />

                <data android:scheme="about" />

                <data android:scheme="javascript" />

            </intent-filter>

      * @param v

      */

     public void onOPenBrower(View v){

        

         Intent intent = new Intent();

         intent.setAction("android.intent.action.VIEW");

        

         intent.addCategory("android.intent.category.BROWSABLE");

        

         intent.setData(Uri.parse("http://www.baidu.com"));

        

         startActivity(intent);

        

     }

 

 

 

5.多个Activity之间获取数据与传递

打开下一个界面,然后返回数据

场景

QQ聊天给好友发送图片 (拍照返回、 相册选取)

选择联系人与短信模版把选择到的内容显示在指定的位置

 

 安卓第九天笔记-Activity

主界面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

 

    <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:gravity="center_horizontal"

        android:text="短信发送助手"

        android:textSize="30sp" />

 

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content" >

 

        <EditText

            android:id="@+id/et_contact"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="20sp"

            android:hint="请输入联系人" />

        <!-- 选择联系人 -->

 

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentRight="true"

            android:onClick="selectContact"

            android:text="+" />

    </RelativeLayout>

 

    <EditText

        android:id="@+id/et_content"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="20sp"

        android:hint="请输入短信内容"

        android:minLines="8" />

 

    <Button

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:onClick="selectSms"

        android:text="选择短信模版" />

 

    <Button

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:onClick="sendSms"

        android:text="发送" />

 

</LinearLayout>

 

短信列表

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

<!--短信列表  -->

    <ListView

        android:id="@+id/lv_sms"

        android:layout_width="match_parent"

        android:layout_height="match_parent" >

    </ListView>

</LinearLayout>

联系人列表

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical" >

<!--联系人列表  -->

    <ListView

        android:id="@+id/lv_contact"

        android:layout_width="match_parent"

        android:layout_height="match_parent" >

    </ListView>

</LinearLayout>

 

 

主界面

/**

 * 通过选择联系人,与模版把选择到的内容显示在指定的位置 1.建立布局.设置点击事件 2.跳转到选择页面 3.使用ListView展示数据

 * 4.为ListView设置OnItemClickListener监听器与事件把选择到的数据返回给请求 Activity

 * 5.关闭选择的Activity结束finish() 6

 *

 * @author 刘楠

 *

 *         2016-2-25下午10:01:28

 */

public class MainActivity extends Activity {

 

      /*

       * 联系人

       */

      private EditText et_contact;

      /*

       * 内容

       */

      private EditText et_content;

 

      @Override

      protected void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.activity_main);

 

           et_contact = (EditText) findViewById(R.id.et_contact);

           et_content = (EditText) findViewById(R.id.et_content);

 

      }

 

      @Override

      protected void onActivityResult(int requestCode, int resultCode, Intent data) {

           //判断返回的intent是否为空

           if(data==null){

                 return ;

           }

           //跟所请求码区别是什么结果

           switch (requestCode) {

           case 100:

                 //设置连联系人

                 et_contact.setText(data.getStringExtra("contact"));

                 break;

           case 200:

                 //设置内容

                 et_content.setText(data.getStringExtra("content"));

                 break;

           }

      }

     

      /**

       * 选择联系人

       *

       * @param v

       */

      public void selectContact(View v) {

 

           Intent intent = new Intent();

 

           intent.setClass(this, ContactActivity.class);

           /*

            * requestCode:随意写, 如果一个页面内有多个请求结果的要区分

            */

           startActivityForResult(intent, 100);

      }

 

      /**

       * 选择SMS模版

       *

       * @param v

       */

      public void selectSms(View v) {

           Intent intent = new Intent();

 

           intent.setClass(this, SmsActivity.class);

           /*

            * requestCode:随意写, 如果一个页面内有多个请求结果的要区分

            */

           startActivityForResult(intent, 200);

      }

 

      /**

       * 发送SMS

       *

       * @param v

       */

      public void sendSms(View v) {

 

          

           String number = et_contact.getText().toString().trim();

           String body = et_content.getText().toString().trim();

          

           if(TextUtils.isEmpty(number) || TextUtils.isEmpty(body)){

                 Toast.makeText(this, "手机号或者内容不能为空", Toast.LENGTH_SHORT).show();

                 return ;

           }

           /*

            * 发送短信

            */

           SmsManager manager = SmsManager.getDefault();

          

           //拆分短信

           ArrayList<String> divideMessage = manager.divideMessage(body);

          

           for (String str : divideMessage) {

                 manager.sendTextMessage(number, null, str, null, null);

           }

      }

 

}

 

 

短信列表

 

/**

 * 短信模块列表显示

     

 * @author 刘楠

 *

 * 2016-2-25下午9:48:12

 */

public class SmsActivity extends Activity {

     

      protected static final String TAG = "SmsActivity";

      private ListView lv_sms;

      private String [] objects={

                 "短信模块列表显示内容1",

                 "短信模块列表显示内容2",

                 "短信模块列表显示内容3",

                 "短信模块列表显示内容4",

                 "短信模块列表显示内容5",

                 "短信模块列表显示内容6",

                 "短信模块列表显示内容7",

                 "短信模块列表显示内容8",

                 "短信模块列表显示内容9",

                 "短信模块列表显示内容10",

                 "短信模块列表显示内容11",

                 "短信模块列表显示内容12",

                 "短信模块列表显示内容45",

      };

 

      @Override

      protected void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.activity_sms_item);

          

           lv_sms = (ListView) findViewById(R.id.lv_sms);

          

          

           lv_sms = (ListView) findViewById(R.id.lv_sms);

          

           ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, objects);

           //配置监听器

           lv_sms.setAdapter(adapter);

          

           //设置监听事件

           lv_sms.setOnItemClickListener(new OnItemClickListener() {

 

                 @Override

                 public void onItemClick(AdapterView<?> parent, View view,

                            int position, long id) {

                      Log.i(TAG, "position:"+position);

                      Log.i(TAG, "元素:"+objects[position]);

                      //返回返回resultCode 响应码

                      Intent intent = new Intent();

                      //保存传递的数据

                      intent.putExtra("content", objects[position]);

                      //调置结果

                      setResult(200, intent);

                     

                      //结束

                      finish();

                     

                 }

           });

      }

}

 

 

联系人列表

 

/**

 * 联系人列表显示

    

 * @author 刘楠

 *

 * 2016-2-25下午9:48:12

 */

public class ContactActivity extends Activity {

 

     protected static final String TAG = "ContactActivity";

     private ListView lv_contact;

     private String [] objects ={

              "5556",

              "13800138000",

              "13800138012",

              "13800138023",

              "13800138004",

              "13800138025",

              "13800138306",

              "13800138007",

              "13800138069",

     };

    @Override

     protected void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_contact_item);

        

         lv_contact = (ListView) findViewById(R.id.lv_contact);

        

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, objects);

         //配置监听器

         lv_contact.setAdapter(adapter);

        

         //设置监听事件

         lv_contact.setOnItemClickListener(new OnItemClickListener() {

 

              @Override

              public void onItemClick(AdapterView<?> parent, View view,

                       int position, long id) {

                   Log.i(TAG, "position:"+position);

                   Log.i(TAG, "元素:"+objects[position]);

                  

                  

                   //返回返回resultCode 响应码

                   Intent intent = new Intent();

                   //保存传递的数据

                   intent.putExtra("contact", objects[position]);

                   //调置结果

                   setResult(200, intent);

                  

                   //结束

                   finish();

              }

         });

        

     }

}

 

 添加权限

    <uses-permission android:name="android.permission.SEND_SMS"/>

 

6.生命周期

 安卓第九天笔记-Activity

###Activity生命周期

 

* 生命周期

 

> 一类从出生到消亡的过程(时间段)

 

* 生命周期方法

 

> 对象从创建到销毁,所调用的方法。

 

 

* 创建与销毁

 

> onCreate 和 onDestroy 数据的保存和回显工作

 

 

* 可见与不可见

 

> onStart 和 onStop  可见的时候播放视频,不可见的时候暂停视频的播放

 

 

* 获取焦点和失去焦点

 

> onResume 和 onPause

 

###生命周期总结

 

*  entire lifetime

 

> 完整生命周期 onCreate-- onStart-- onResume -- onPause -- onStop -- onDestroy

 

* visible lifetime

 

> 可视生命周期 :  onStart()  -- onResume -- onPause -- onStop

 

* foreground lifetime

 

> 前台生命周期: onResume -- onPause

 

 

正常的生命周期

一个APP打开到退出

 

打开最小化,---唤醒-->>退出

 

 安卓第九天笔记-Activity

安卓第九天笔记-Activity

 

/**
 * Activity生命周期
 */
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    /**
     * 初始化
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i(TAG, "======onCreate=======");

    }

    /*
    界面可见时执行
     */

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, "======onStart=======");
    }

    /*
    界面最小化后,再打开时执行
     */
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "======onResume=======");
    }

    /*
    界面最小化
     */
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG, "======onPause=======");
    }

    /*
    界面不可见
     */
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "======onStop=======");
    }


    /**
     * 退出Activity里执行
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "======onDestroy=======");
    }


}

 

 

 

 

 

7横竖屏切换:

 

1. 直接规定了是什么方向显示

android:screenOrientation="landscape" |portrait

2. 不指定方向,横屏就横屏显示,竖屏就竖屏显示

android:configChanges="orientation|screenSize|keyboardHidden"

8任务和栈

* task

> 一个应用程序可以拥有多个界面,一个界面就可以看成是与用户交互的任务 task , 为了方便管理,所以android就使用一个栈来集中管理他们这些任务 , 如果一个应用程序的所有栈都已经清空了,那么这个应用程序也就完全退出了 , 一个应用程序可以拥有多个任务栈

* stack

> 栈 , 是一种数据结构 遵循的是后进先出, 队列 (Queue ) ,先进先出

9.Activity启动模式

* standard

> 这是默认的启动模式,: 启动多少次这个界面,就会有多少个这个界面实例被压入栈中

* singleTop

> 单一顶部模式:如果一个界面的实例已经存在栈顶,那么久不会再继续创建这个界面的实例,而是继续使用这个实例。 只要不是顶部,就与默认的模式一样。

> 场景: 为了避免出现一些奇怪的现象,为了避免让自己启动自己  短信编写界面*

* singleTask

> 单一任务模式:如果一个界面的实例已经存在栈中,那么再次启动就不会继续创建新的实例,而是继续复用它,并且把它与栈顶之间的其他实例全部移除掉。

 

> 场景: 为了减轻资源的消耗,在栈中值创建一次实例, 比如: 浏览器的界面

* singleInstance

> 全局唯一模式:  无论创建多少次都只有一个实例,并且这个实例放在一个独立的栈中,里面有且只能有它自己一个实例

> 场景: 为了减轻资源的消耗,在栈中值创建一次实例  比如: 通话界面或者紧急通话界面

 

相关文章: