Android-1-电话拨号器

项目包
      src --java源代码
      gen文件夹  -- 资源文件,修改后自动生成
                    ---R.java 中的drawable类对应目录里的drawable目录, layout对应
                            目录中的layout目录,String对应String目录
       assets文件夹 存放较大的文件:如视频,音频,字体等 (1G 不会被编译)
        res文件夹
                    ---drawable 图片 Res存放资源文件
                    ---layout main.Xm 界面的布局textView显示内容不能修改
                    ---values  String.Xml  存放字符串便于国际化
        AndroidManifest.xml 

2.工程结构解析
    src:java的源代码目录(只允许有一个包)
    AndroidMainfest.Xml(清单文件, 描述应用程序的构成,组件,权限等信息)
    gen/R.java 资源文件,修改后自动生成
    android:库
    assets:静态资源文件
    drawable 程序图标
    layOut布局文件夹
    values:应用程序的String颜色 (String.XML)
    classes.dex编译的java二进制码Android平台上的可执行文件

    2. Android 的包装功能
android  .app 提供高层程序的模型,提供基本的运行环缉
android .content 对设备上的数据进行访问和发布的类
android .database 通过内容提供浏览和发布
android .graphics 底层的图形库
android .location 定位和相关的服务
android .media 管理多哦中音频,视频的媒体和接口
android .net 提供帮助网络访问的类
android .os 提供了系统服务,消息的传输 , IPC机制
android .opengl 提供OPENGL的工具
android .provider:提供访问android的内容
android .telephony 提供与拨打电话相关的APL交互
android .view 提供基础的用户界面接口框架
android .util 涉及工具性的方法
android .webkit默认浏览器接口
android .widget包含各种UI元素在应用程序的频幕中使用

    3. android 程序的核心组件
view 界面视图,组件 UI控制
Intent 意图,支持组件间的通信
Activity:处理界面
IntentReceiver接收信息及事件处理
Service 后台服务
 Notification :消息与通知

    4.Activity的声明周期
    void onCreate(Bundle saveInstancestate )
    void onStart ()
    void onRestart()
    void onResume()
    void onPause()
    void onStop()
    void onDestroy()

Myandroid1/res/layout/activity_main.xml
 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

/Myandroid1/res/values/strings.xml
 <string name="app_name">Myandroid1</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Jia You Wangqi!</string>
【Activity】
  一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。
  一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。
  当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。
【Creating an Activity】
  创建一个activity,你必须创建一个Activity的子类(或者一个Activity的子类的子类)。在你的子类中,你需要实现系统回调的回调方法,当activity在它的生命周期的多种状态中转换的时候,例如当activity被创建、停止、恢复或摧毁。两个最重要的回调方法是:
onCreate()
你必须实现这个方法。系统调用它当创建你的activity的时候。在你的实现中,你应该初始化你的activity的基本的组件。更重要的是,这里就是你必须调用setContentView()来定义activity用户接口而已的地方。
onPause()
系统调用这个方法当用户离开你的activity(虽然不总是意味着activity被摧毁)。这通常是你应该提交任何变化,那此将会超越user session而存在的(因为用户可能不再回来)。
  有若干其它生命周期回调函数你应该使用为了提供一个流畅的用户体验,并表操作异常中断会引起你的activity被中断甚至被摧毁。
1、Implementing a user interface
  一个activity的用户接口被一个层次化的视图提供--继承于View类的对象。每个View控制activity窗口中的一个特定矩形区域并且能响应用户交互。例如,一个view可能是个button,初始化动作当用户触摸它的时候。
  Android提供大量预定义的view,你可以使用来设计和组件你的布局。“Widgets”是一种给屏幕提供可视化(并且交互)元素的view,例如按钮、文件域、复选框或者仅仅是图像。“Layouts”是继承于ViewGroup的View,提供特殊的布局模型为它的子view,例如线程布局、格子布局或相关性布局。你可以子类化View和ViewGroup类(或者存在的子类)来创建自己的widget和而已并且应用它们到你的activity布局中。
  最普通的方法是定义一个布局使用view加上XML布局文件保存在你的程序资源里。这样,你可以单独维护你的用户接口设计,而与定义activity行为的代码无关。你可以设置布局作为UI使用setContentView(),传递资源布局的资源ID。可是,你也可以创建新Views在你的activity代码,并且创建一个view层次通过插入新Views到ViewGroup,然后使用那个布局通过传递到根ViewGroup给setContentView()。

bundle就是一个映射:一个从字符串值到不同封装类型的映射。
为何是封装类型,不是数值类型?在下面的put方法中可以看到,
它还可以操作bundle自身,bundle本身并不是基本的数值类型。是object 的子类.
在activity间数据传递担负重要任务,实际传递的是bundle:

--------------------------------------------------------------------------------------------

在手机的界面上是否显示图标

3-javaAndroid 文件
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main); //设置文件的VIew对象
 }

4-拨打电话

<EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content" // ----充满内容
        android:layout_height="wrap_content"
        android:inputType="phone" >
        <requestFocus />
</EditText>

--重点提要--Android--Layout中的界面中关于button的设计

file_parent

match_parent

充满窗体

<requestFocus />-----触到脚垫弹出软键盘

--重点提要--Android--R中的界面中关于添加控件的设计
        android:id="@+id/button1"---在R文件中添加ID号
        findViewById(R.id.editText1);---寻找ID对应的空间
--重点提要--Android--启动控件中的界面中关于添加控件的设计
//意图:想干一件事==windows start
   Intent intent = new Intent();
//判断输入的内容是否为空
if(TextUtils.isEmpty(nummberstr)){

   }
----------------------------
android单击事件的写法
1.创建一个内部类实现OnClickListener接口
    重写onClick()方法
2.实例化接口 ,匿名内部类
    bt_dail.setonClickListener( new OnClickListener(){
            CallPhone();
    })
3.MainActivity实现接口
    在类中重写onClick()方法执行CallPhone()
    public void onClick(View v){
        switch( v.getId ){
            case R.id.bt_cail:
                ....;break;
            default :
                .....break;
        }
    }
 4.内部通过反射机制执行程序
android:onClick = "dailButtonClicked"
在MainActivity主程序中加入方法
执行程序

----源代码----

1.layOut层
<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="wrap_content"
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=".MainActivity" > 

<EditText
android:id="@+id/Phone_call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:ems="10"
android:inputType="phone" > 

<requestFocus />
</EditText> 

<Button
android:id="@+id/Call_wangqi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/Call_chenyi"
android:layout_alignParentBottom="true"
android:text="@string/call_wan" /> 

<Button
android:id="@+id/Call_chenyi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Call_wangqi"
android:layout_alignLeft="@+id/Call_linyawei"
android:text="@string/call_ta" /> 

<Button
android:id="@+id/Call_linyawei"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Call_chenyi"
android:layout_alignLeft="@+id/Call_lengzhenfu"
android:text="@string/call_ya" /> 

<Button
android:id="@+id/Call_lengzhenfu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Call_linyawei"
android:layout_alignLeft="@+id/Call_JINRUIBIN"
android:text="@string/call_len" /> 

<Button
android:id="@+id/Call_JINRUIBIN"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Call_lengzhenfu"
android:layout_alignLeft="@+id/Call_Chaibo"
android:text="@string/call_jinrui" /> 

<Button
android:id="@+id/Call_Chaibo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Call_JINRUIBIN"
android:layout_alignLeft="@+id/Call_other"
android:text="@string/call_caibo" /> 

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Call_other"
android:layout_centerHorizontal="true"
android:text="@string/_friend" /> 

<Button
android:id="@+id/Call_other"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/Phone_call"
android:layout_below="@+id/Phone_call"
android:layout_marginTop="16dp"
android:text="Call_me" /> 

<Button
android:id="@+id/Call_xiangshuai"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Call_Chaibo"
android:layout_alignLeft="@+id/Call_Chaibo"
android:text="@string/call_x" />
</RelativeLayout>

2-Strings
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MyFriend</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">MyFriend!</string>
    <string name="Call_me">Call_me!</string>
    <string name="Call_chaibo">Call_柴博!</string>
    <string name="Call_wangqi">Call_王琪!</string>
    <string name="Call_JINRUIBIN">Call_靳瑞斌!</string>
    <string name="Call_linyawei">Call_廉亚伟!</string>
    <string name="Call_lengzhenfu">Call_冷正甫!</string>
    <string name="Call_chenyi">Call_陈翼乾!</string>
    <string name="call_jinrui">Call_靳瑞斌</string>
    <string name="call_caibo">Call_柴博</string>
    <string name="call_len">Call_冷正甫</string>
    <string name="call_ya">Call_廉亚伟</string>
    <string name="call_ta">Call_唐涛</string>
    <string name="call_wan">Call_王琪</string>
    <string name="_friend">\"Friend>.</string>
    <string name="call_x">Call_相帅</string>
</resources>

3-MainActivity
package com.example.myfriend;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
 private String nummber ="";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Button button1 = (Button)findViewById(R.id.Call_other);
  Button button2 = (Button)findViewById(R.id.Call_Chaibo);
  Button button3 = (Button)findViewById(R.id.Call_chenyi);
  Button button4 = (Button)findViewById(R.id.Call_JINRUIBIN);
  Button button5= (Button)findViewById(R.id.Call_lengzhenfu);
  Button button6 = (Button)findViewById(R.id.Call_linyawei);
  Button button7 = (Button)findViewById(R.id.Call_wangqi);
  Button button8 = (Button)findViewById(R.id.Call_xiangshuai);
  button1.setOnClickListener(MainActivity.this);
  button2.setOnClickListener(MainActivity.this);
  button3.setOnClickListener(MainActivity.this);
  button4.setOnClickListener(MainActivity.this);
  button5.setOnClickListener(MainActivity.this);
  button6.setOnClickListener(MainActivity.this);
  button7.setOnClickListener(MainActivity.this);
  button8.setOnClickListener(MainActivity.this);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  switch(v.getId()){
   case R.id.Call_other:
      EditText text = (EditText)findViewById(R.id.Phone_call);
      this.nummber = text.getText().toString();
      CallPhone(this.nummber);
      break;
   case R.id.Call_Chaibo:
    this.nummber ="656588";
    Toast.makeText(MainActivity.this, "柴博"+this.nummber,0).show();
    CallPhone(this.nummber);
    break;
   case R.id.Call_wangqi:
    this.nummber ="652008";
    Toast.makeText(MainActivity.this, "王琪"+this.nummber,0).show();
    CallPhone(this.nummber);
    break;
   case R.id.Call_JINRUIBIN:
    this.nummber ="652019";
    Toast.makeText(MainActivity.this, "靳瑞斌"+this.nummber,0).show();
    CallPhone(this.nummber);
    break;
   case R.id.Call_lengzhenfu:
    this.nummber ="656181";
    Toast.makeText(MainActivity.this, "正甫"+this.nummber,0).show();
    CallPhone(this.nummber);
    break;
   case R.id.Call_linyawei:
    this.nummber ="656587";
    Toast.makeText(MainActivity.this, "亚伟"+this.nummber,0).show();
    CallPhone(this.nummber);
    break;
   case R.id.Call_chenyi:
    Toast.makeText(MainActivity.this, "-->"+this.nummber,0).show();
    this.nummber ="652652";
    CallPhone(this.nummber);
    break;
   case R.id.Call_xiangshuai:
    Toast.makeText(MainActivity.this, "-->"+this.nummber,0).show();
    this.nummber ="656202";
    CallPhone(this.nummber);
    break;
   default:
    Toast.makeText(MainActivity.this, "ppp",0).show();
  }
 }
 private boolean CallPhone(String number){
  if(TextUtils.isEmpty(nummber)){
   Toast.makeText(MainActivity.this, "电话号码不能为空!", 0).show();
   return false;
  }
   Intent intent = new Intent();
   intent.setAction(Intent.ACTION_CALL);
   intent.setData(Uri.parse("tel:"+nummber));
   startActivity(intent);
   return true;
 }
}

--重点提要--Android--Layout中的界面中关于button的设计

file_parent

match_parent

充满窗体

<requestFocus />-----触到脚垫弹出软键盘

时间: 2025-01-03 14:33:25

Android-1-电话拨号器的相关文章

Android:使用电话拨号器

1.申请权限: <uses-permission android:name="android.permission.CALL_PHONE" /> 2.创建意图(Intent): Intent intent = new Intent();intent.setAction("android.intent.action.CALL");//操作系统会自动为Intent注册类别:android.intent.category.DEFAULT//intent.add

Android实现电话拨号器和短信发送器

电话拨号器和短信发送器是Android初学者很好的练习项目,今天就找了两个写得很不错的例子学习下 电话拨号器 实现原理:用户输入电话号码,当点击拨打的时候,由监听对象捕获,监听对象通过文本控件获取到用户输入的电话号码,由于系统已经实现了电话拨号功能,所以我们只需要调用这个功能就可以了. 步骤: 1.界面布局 2.编写Activity 3.使用意图过滤器激活电话拨号功能 4.添加电话服务权限(用手机的电话服务,要在清单文件AndroidManifest.xml中添加电话服务权限) 如图所示这三个控

Android实战--电话拨号器

今天跟着黑马视频建立一个android app--电话拨号器 首先新建一个android项目 activity_main_xml中的代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_paren

Android入门——电话拨号器和四种点击事件

相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个例子我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 1. 理解需求: *一个文本框--用来接收电话号码 *一个按钮--用来触发事件 2. 设计UI 3. 代码实现 public class MainActivity extends Activity { private EditText et_number; //定义变量用来接收电话号码 priva

Android基础--电话拨号器

1.布局文件: activity_main.xml <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_pare

Android学习笔记(1)——电话拨号器

搬运自本人博客:Android学习笔记(1)--电话拨号器 程序的实现过程非常简单,大体分为以下几步: 确定程序的功能,大致确定好UI界面. 通过调整xml文件参数让界面更加美观. 在Activity文件编写代码,完成对应的事件等. 对于电话拨号器,我们最后的界面大致如下: 对应的布局文件如下,采用的是相对布局. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <Relative

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb

初识安卓小程序(Android电话拨号器)

首先,先创建一个安卓项目(我的版本是4.4.2的),名字为"电话拨号器",创建的时候点击"clipart",如图: 然后在res文件夹下找到layout文件夹,找到activity_main.xml或fragment_main.xml,在里面输入或拖拽按钮 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

android基础(3):电话拨号器

电话拨号器: 权限:android.permission.CALL_PHONE 布局代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_hei

Android开发系列(一):电话拨号器的实现

目标,实现简单的电话拨号功能. 首先,可以看到上边有几个控件,上边有几个文字. 在我们建立好了工程之后,我们首先可以在res目录下的values目录的strings.xml中把这几个文字添加进去,为了更好地实现国际化. <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity