Android安卓 _“Activity"_01+简单的拨号器
一.生命周期
Android系统相当于servlet容器,Activity相当于一个servlet,我们的Activity处在这个容器中,一切创建实例、初始化、销毁实例等过程都是容器来调用的,这也就是所谓的“Don't call me, I'll call you.”机制。
经典的生命周期流程图:
了解了Activity生命周期的几个过程:
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
Button
用到Button控件时,往往都是“一次性”使用,这时,为了方便起见,我们一般采用的是匿名内部类的方法;
方法一:
public class MainActivity extends Activity { private Button but ; //Activity创建时被调用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); this.setContentView(R.layout.one); but = (Button) findViewById(R.id.button1); //获取Button but.setText("点击我看看"); //设置按钮名称 //方法一 but.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "滚!!", Toast.LENGTH_LONG).show(); } }); }
在方法一的案例中可以看到,按照方法一的方法来做,我并不能有效的进行后期维护,所以我们要再定义一个类来存放;
定义一个类(ButOnClickListener)
package com.example.test; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; public class ButOnClickListener implements OnClickListener{ //获取Context对象 private Context context ; //重载ButOnClickListener public ButOnClickListener (Context con){ this.context = con ; } @Override public void onClick(View v) { Toast.makeText(context, "你滚。。。", Toast.LENGTH_LONG).show(); } }
住:当添加一个按钮是,点击这个按钮是有相应的响应,只不过没有内容。
Toast.makeText有三参数要设置
context:Context对象;
Text:指定要显示内容;
duration:指定是时间;
最终显示结果:
二:简单的拨号器
相关的控件
按钮控件:Button
显示文本控件:TeextView
输入框控件:EditText
最终布局如下图
相关的XML配置
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- 按钮控件 --> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <!-- 文本控件 --> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/test" /> <!-- 输入框控件 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" /> <!-- 按钮控件(拨号) --> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/bohao" /> </LinearLayout>
Strings.xml 配置
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Test</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="test">请输入手机号</string> <string name="bohao">拨号</string> </resources>
最终效果图:
实现拨号如下代码
/** * 当点击拨号按钮时触发此方法 * @param view view */ public void call(View view) { System.out.println("拨号了 --"); //取出输入框的值 EditText et = (EditText) findViewById(R.id.numberBohao); //输入框对象 String s = et.getText().toString(); //要拨打的电话号码 System.out.println("号码是:"+s); //根据号码拨打电话 //第一:创建一个意图 Intent intent = new Intent(); //第二:指定动作打电话 intent.setAction(Intent.ACTION_CALL); //第三:指定要拨号的号码 intent.setData(Uri.parse("tel:"+s)); //第四:拨号 startActivity(intent); }
注意:要开启相应的权限
打开 -- AndroidManifest.xml
添加如下代码
1 <!-- 添加拨打电话的权限 --> 2 <uses-permission android:name="android.permission.CALL_PHONE"/>