Android studio代碼實現打電話+點擊事件四種方式


  • Android系統架構(重點)

第一層:應用層Application
第二層:應用框架層Application Framework
第三層:Android底層類庫層 Libraries、Dalvik虛擬機
第四層:linux內核層 linux kernel


Android是運行在Linux內核基礎之上的。Google官方上提供了一張Android系統架構圖(四層)。

  • 兩種虛擬機的不同 (重點)

1、架構不同:JVM使用棧架構Dalvik使用的是寄存器,數據是加載到CUP的寄存器上的
2、JVM加載的.class文件Dalvik加載的是.dex文件,對內存的分配情況做了優化
3、jvm: sun oracle     dvm: Google

  • Android工程的目錄結構(這些目錄結構是eclipse下的目錄結構,Android studio中的目錄結構不一樣)

src/ java源代碼存放目錄


gen/ 自動生成目錄
gen 目錄中存放所有由Android開發工具自動生成的文件。目錄中最重要的就是R.java文件。 這個文件由Android開發工具自動產生的。Android開發工具會自動根據你放入res目錄的資源,同步更新修改R.java文件。正因為R.java文件是由開發工具自動生成的,所以我們應避免手工修改R.javaR.java在應用中起到了字典的作用,它包含了各種資源的id,通過R.java,應用可以很方便地找到對應資源。另外編繹器也會檢查R.java列表中的資源是否被使用到,沒有被使用到的資源不會編繹進軟件中,這樣可以減少應用在手機占用的空間。

res/ 資源(Resource)目錄
在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數據。

libs/ 支持庫目錄
程序開發時需要的一些三方的jar包可以放在這個目錄,系統會自動把里面的jar包,添加到環境變量。

assets資源目錄
Android除了提供/res目錄存放資源文件外,在/assets目錄也可以存放資源文件,而且/assets目錄下的資源文件不會在R.java自動生成ID,所以讀取/assets目錄下的文件必須指定文件的路徑,如:file://android_asset/xxx.3gp

AndroidManifest.xml 項目清單文件(Android studio中的四大組件不用手動配置,會自動生成
這個文件列出了應用程序所提供的功能,以后你開發好的各種組件需要在該文件中進行配置,如果應用使用到了系統內置的應用(如電話服務、互聯網服務、短信服務、GPS服務等等),你還需在該文件中聲明使用權限。

project.properties 項目環境信息,一般是不需要修改此文件

 

  • ADB命令

— 常見命令:

adb devices 列出所有的設備
adb shell 掛載到linux的空間 可以執行linux指令
adb install xxx.apk 如果有多個設備,我們可以指定設備 adb install –s emulator-5554 D:/xxx.apk
adb push 把文件推到手機里
adb pull 把文件從手機里拉出來
ctrl + F11 橫豎屏的切換

  • 電話撥號器(重點)

開發項目的步驟:

1、理解需求,弄明白需求后在寫代碼;
2、在Android工程中設計UI界面;
3、代碼實現業務邏輯;

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:id="@+id/activity_main"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7 >
 8 
 9     <Button
10         android:text="撥打電話"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:layout_alignParentBottom="true"
14         android:layout_centerHorizontal="true"
15         android:layout_marginBottom="179dp"
16         android:id="@+id/bt_call" />
17 
18     <EditText
19         android:hint="請輸入電話號碼"
20         android:layout_width="wrap_content"
21         android:layout_height="wrap_content"
22         android:layout_marginBottom="53dp"
23         android:id="@+id/et_phone"
24         android:layout_above="@+id/bt_call"
25         android:layout_centerHorizontal="true" />
26 </RelativeLayout>

 

 1 package com.example.ahu_lichang.myapplication;
 2 
 3 import android.content.Intent;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 
11 public class MainActivity extends AppCompatActivity {
12     private EditText et_phone;
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17 
18         et_phone = (EditText) findViewById(R.id.et_phone);
19         Button bt_call  = (Button) findViewById(R.id.bt_call);
20 
21         bt_call.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View v) {
24                 //獲取輸入的電話號碼
25                 String phone = et_phone.getText().toString().trim();
26                 //創建打電話的意圖
27                 Intent intent = new Intent();
28                 //設置撥打電話的動作
29                 intent.setAction(Intent.ACTION_CALL);
30                 //設置撥打電話的號碼
31                 intent.setData(Uri.parse("tel:" + phone));
32                 //開啟打電話的意圖
33                 startActivity(intent);
34             }
35         });
36     }
37 }

 

 

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

 

注:這里撥打電話ACTION_CALL,在API22(Android5.1)上能正常運行。但是在高版本的API,例如API25(Android7.0)中,已經添加權限了,但是還是會報權限的錯誤!

  • 點擊事件的四種創建方式

(1)采用內部類MyOnClickListener的方式去實現OnClickListener接口

 1 package com.example.ahu_lichang.myapplication;
 2 
 3 import android.content.Intent;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 
11 public class MainActivity extends AppCompatActivity {
12     private EditText et_phone;
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17 
18         et_phone = (EditText) findViewById(R.id.et_phone);
19         Button bt_call  = (Button) findViewById(R.id.bt_call);
20 
21 /*        bt_call.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View v) {
24                 //獲取輸入的電話號碼
25                 String phone = et_phone.getText().toString().trim();
26                 //創建打電話的意圖
27                 Intent intent = new Intent();
28                 //設置撥打電話的動作
29                 intent.setAction(Intent.ACTION_CALL);
30                 //設置撥打電話的號碼
31                 intent.setData(Uri.parse("tel:" + phone));
32                 //開啟打電話的意圖
33                 startActivity(intent);
34             }
35         });*/
36         class MyOnClickListener implements View.OnClickListener{
37 
38             @Override
39             public void onClick(View v) {
40                 //獲取輸入的電話號碼
41                 String phone = et_phone.getText().toString().trim();
42                 //創建打電話的意圖
43                 Intent intent = new Intent();
44                 //設置撥打電話的動作
45                 intent.setAction(Intent.ACTION_CALL);
46                 //設置撥打電話的號碼
47                 intent.setData(Uri.parse("tel:" + phone));
48                 //開啟打電話的意圖
49                 startActivity(intent);
50             }
51         }
52         bt_call.setOnClickListener(new MyOnClickListener());
53     }
54 }

 


(2)匿名內部類

 1 package com.example.ahu_lichang.myapplication;
 2 
 3 import android.content.Intent;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 
11 public class MainActivity extends AppCompatActivity {
12     private EditText et_phone;
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17 
18         et_phone = (EditText) findViewById(R.id.et_phone);
19         Button bt_call  = (Button) findViewById(R.id.bt_call);
20 
21         bt_call.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View v) {
24                 //獲取輸入的電話號碼
25                 String phone = et_phone.getText().toString().trim();
26                 //創建打電話的意圖
27                 Intent intent = new Intent();
28                 //設置撥打電話的動作
29                 intent.setAction(Intent.ACTION_CALL);
30                 //設置撥打電話的號碼
31                 intent.setData(Uri.parse("tel:" + phone));
32                 //開啟打電話的意圖
33                 startActivity(intent);
34             }
35         });
36     }
37 }

 


(3)當前類imp OnClickListener接口 

 1 package com.example.ahu_lichang.myapplication;
 2 
 3 import android.content.Intent;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 
11 public class MainActivity extends AppCompatActivity implements View.OnClickListener{
12     private EditText et_phone;
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17 
18         et_phone = (EditText) findViewById(R.id.et_phone);
19         Button bt_call  = (Button) findViewById(R.id.bt_call);
20 
21         bt_call.setOnClickListener(this);
22 
23 /*        bt_call.setOnClickListener(new View.OnClickListener() {
24             @Override
25             public void onClick(View v) {
26                 //獲取輸入的電話號碼
27                 String phone = et_phone.getText().toString().trim();
28                 //創建打電話的意圖
29                 Intent intent = new Intent();
30                 //設置撥打電話的動作
31                 intent.setAction(Intent.ACTION_CALL);
32                 //設置撥打電話的號碼
33                 intent.setData(Uri.parse("tel:" + phone));
34                 //開啟打電話的意圖
35                 startActivity(intent);
36             }
37         });*/
38 /*        class MyOnClickListener implements View.OnClickListener{
39 
40             @Override
41             public void onClick(View v) {
42                 //獲取輸入的電話號碼
43                 String phone = et_phone.getText().toString().trim();
44                 //創建打電話的意圖
45                 Intent intent = new Intent();
46                 //設置撥打電話的動作
47                 intent.setAction(Intent.ACTION_CALL);
48                 //設置撥打電話的號碼
49                 intent.setData(Uri.parse("tel:" + phone));
50                 //開啟打電話的意圖
51                 startActivity(intent);
52             }
53         }
54         bt_call.setOnClickListener(new MyOnClickListener());*/
55     }
56     @Override
57     public void onClick(View v) {
58         //獲取輸入的電話號碼
59         String phone = et_phone.getText().toString().trim();
60         //創建打電話的意圖
61         Intent intent = new Intent();
62         //設置撥打電話的動作
63         intent.setAction(Intent.ACTION_CALL);
64         //設置撥打電話的號碼
65         intent.setData(Uri.parse("tel:" + phone));
66         //開啟打電話的意圖
67         startActivity(intent);
68     }
69 
70 }

 


(4)onclick

1     <Button
2         android:text="撥打電話"
3         android:onClick="onclick"
4         android:layout_width="wrap_content"
5         android:layout_height="wrap_content"
6         android:layout_alignParentBottom="true"
7         android:layout_centerHorizontal="true"
8         android:layout_marginBottom="179dp"
9         android:id="@+id/bt_call" />

 

 1 package com.example.ahu_lichang.myapplication;
 2 
 3 import android.content.Intent;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 
11 public class MainActivity extends AppCompatActivity {
12     private EditText et_phone;
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17         et_phone = (EditText) findViewById(R.id.et_phone);
18     }
19     public void onclick(View v) {
20         //獲取輸入的電話號碼
21         String phone = et_phone.getText().toString().trim();
22         //創建打電話的意圖
23         Intent intent = new Intent();
24         //設置撥打電話的動作
25         intent.setAction(Intent.ACTION_CALL);
26         //設置撥打電話的號碼
27         intent.setData(Uri.parse("tel:" + phone));
28         //開啟打電話的意圖
29         startActivity(intent);
30     }
31 }

 

  • 五種布局

1. 線性布局LinearLayout(重點) 分水平和垂直2種
2. 相對布局RelativeLayout:各個組件都是按照相對位置來擺放。
3. 幀布局FrameLayout: 一層一層繪制
4. 表格布局TableLayout
5. 絕對布局AbsoluteLayout  已經被谷歌廢棄

在實際的開發工作中線性布局和相對布局用的比較多,大多數的項目中都是各種不同布局的相互嵌套使用。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM