zoukankan      html  css  js  c++  java
  • 安卓第九天笔记-Activity

    安卓第九天笔记-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聊天给好友发送图片 (拍照返回、 相册选取)

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

     

    主界面布局

    <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生命周期

    * 生命周期

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

    * 生命周期方法

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

    * 创建与销毁

    > 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生命周期
     */
    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

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

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

  • 相关阅读:
    兼容ie8 rgba()用法 滤镜filter的用法
    解決BufferedReader读取UTF-8文件中文乱码
    基于JavaScript实现表单密码的隐藏和显示出来
    Java多线程学习(转载)
    使用java 程序创建格式为utf-8文件的方法(写入和读取json文件)
    java获取classpath文件路径空格转变成了转义字符%20的问题
    java中Class.getResource用法
    事务传播行为和特性
    事务隔离级别
    使用Condition循环依次打印123
  • 原文地址:https://www.cnblogs.com/liunanjava/p/5218678.html
Copyright © 2011-2022 走看看