当前位置: 首页 > news >正文

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.project结构解析
    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然后点击backbutton,它被弹出栈(而且被摧毁)。然后之前的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。比如button、文件域、复选框或者不过图像。“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 />-----触摸板弹出软键盘

相关文章:

  • 你的知识需要管理PKM
  • 老李分享:性能测试你不应该只知道loadrunner(1)
  • 深入理解自动加载(一)
  • Javascript书籍推荐----(步步为赢)
  • viewcontroller的跳转问题
  • 互联网+时代,用数据说话
  • 亲测,手把手教你用Python抢票
  • 控制显示行头列(Indicator)
  • bootstrap按钮组(一)
  • centos git服务器搭建配置
  • powerdesigner奇淫技
  • 运营商级网络部署开启 物联网普及为时不远
  • SwizzleMethod 黑魔法
  • bootstrap-wysiwyg整合ajaxFileUpload实现图片实时上传刷新
  • 别成为网络安全垃圾数据收藏家
  • Google 是如何开发 Web 框架的
  • Android 架构优化~MVP 架构改造
  • Centos6.8 使用rpm安装mysql5.7
  • js面向对象
  • springboot_database项目介绍
  • Unix命令
  • Vue2.0 实现互斥
  • 聊聊flink的BlobWriter
  • 前端存储 - localStorage
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 为视图添加丝滑的水波纹
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 新书推荐|Windows黑客编程技术详解
  • NLPIR智能语义技术让大数据挖掘更简单
  • #AngularJS#$sce.trustAsResourceUrl
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)Elastix图像配准:3D图像
  • (6)设计一个TimeMap
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Java)【深基9.例1】选举学生会
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (分布式缓存)Redis分片集群
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (三)模仿学习-Action数据的模仿
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十八)三元表达式和列表解析
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .Family_物联网
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CLR基本术语
  • .net 获取url的方法
  • .NET 药厂业务系统 CPU爆高分析
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • @ModelAttribute注解使用
  • @TableId注解详细介绍 mybaits 实体类主键注解