Android項(xiàng)目的目錄結(jié)構(gòu)(熟悉)
- Activity:應(yīng)用被打開時顯示的界面
- src:項(xiàng)目代碼
- R.java:項(xiàng)目中所有資源文件的資源id
- Android.jar:Android的jar包溜徙,導(dǎo)入此包方可使用Android的api
- libs:導(dǎo)入第三方j(luò)ar包
- assets:存放資源文件,比方說mp3、視頻文件
- bin:存放編譯打包后的文件
- res:存放資源文件良蛮,存放在此文件夾下的所有資源文件都會生成資源id
- drawable:存放圖片資源
- layout:存放布局文件,把布局文件通過資源id指定給activity,界面就會顯示出該布局文件定義的布局
- menu:定義菜單的樣式
- Strings.xml:存放字符串資源,每個資源都會有一個資源id
Android的配置文件(清單文件)(熟悉)
-
指定應(yīng)用的包名
package="com.itheima.helloworld"
- data/data/com.itheima.helloworld(上面代碼指定的包名)
- 應(yīng)用生成的文件都會存放在此路徑下
Android的四大組件在使用前全部需要在清單文件中配置
<Application/>的配置對整個應(yīng)用生效
<activity/>的配置對該activity生效
DDMS(掌握)
- Dalvik debug monitor service
- Dalvik調(diào)試監(jiān)控服務(wù)
常用的adb指令(掌握)
Android debug bridge:安卓調(diào)試橋
- adb start-server:啟動adb進(jìn)程
- adb kill-server:殺死adb進(jìn)程
- adb devices:查看當(dāng)前與開發(fā)環(huán)境連接的設(shè)備廓潜,此命令也可以啟動adb進(jìn)程
- adb install XXX.apk:往模擬器安裝apk
- adb uninstall 包名:刪除模擬器中的應(yīng)用
- adb shell:進(jìn)入linux命令行
- ps:查看運(yùn)行進(jìn)程
- ls:查看當(dāng)前目錄下的文件結(jié)構(gòu)
- netstat -ano:查看占用端口的進(jìn)程
電話撥號器(掌握)
功能:用戶輸入一個號碼,點(diǎn)擊撥打按鈕善榛,啟動系統(tǒng)打電話的應(yīng)用把號碼撥打出去
1. 定義布局
-
組件必須設(shè)置寬高辩蛋,否則不能通過編譯
android:layout_width="wrap_content" android:layout_height="wrap_content"
-
如果要在java代碼中操作某個組件,則組件需要設(shè)置id移盆,這樣才能在代碼中通過id拿到這個組件
android:id="@+id/et_phone"
2. 給按鈕設(shè)置點(diǎn)擊偵聽
-
給按鈕設(shè)置偵聽
//通過id拿到按鈕對象 Button bt_call = (Button) findViewById(R.id.bt_call); //給按鈕設(shè)置點(diǎn)擊 bt_call.setOnClickListener(new MyListener());
3. 得到用戶輸入的號碼
//得到用戶輸入的號碼悼院,先拿到輸入框組件
EditText et_phone = (EditText) findViewById(R.id.et_phone);
String phone = et_phone.getText().toString();
4. 把號碼打出去
Android系統(tǒng)中基于動作機(jī)制,來調(diào)用系統(tǒng)的應(yīng)用咒循,你告訴系統(tǒng)你想做什么動作据途,系統(tǒng)就會把能做這個動作的應(yīng)用給你,如果沒有這個應(yīng)用叙甸,會拋異常
-
設(shè)置動作颖医,通過意圖告知系統(tǒng)
//把號碼打出去 //先創(chuàng)建一個意圖對象 Intent intent = new Intent(); //設(shè)置動作,打電話 intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + phone)); //把意圖告訴系統(tǒng) startActivity(intent);
-
添加權(quán)限
<uses-permission android:name="android.permission.CALL_PHONE"/>
點(diǎn)擊事件的四種寫法(掌握)
第一種
-
定義一個MyListener實(shí)現(xiàn)onClickListener接口
Button bt1 = (Button) findViewById(R.id.bt1); bt1.setOnClickListener(new MyListener());
第二種
-
定義一個匿名內(nèi)部類實(shí)現(xiàn)onClickListener接口
Button bt2 = (Button) findViewById(R.id.bt2); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("第二種"); } });
第三種
-
讓當(dāng)前activity實(shí)現(xiàn)onClickListener接口
Button bt3 = (Button) findViewById(R.id.bt3); bt3.setOnClickListener(this);
第四種
-
給Button節(jié)點(diǎn)設(shè)置onClick屬性裆蒸,
android:onClick="click"
-
然后在activity中定義跟該屬性值同名的方法
public void click(View v){ System.out.println("第四種"); }
短信發(fā)送器(掌握)
功能:用戶輸入號碼和短信內(nèi)容熔萧,點(diǎn)擊發(fā)送按鈕,調(diào)用短信api把短信發(fā)送給指定號碼
1. 定義布局
-
輸入框的提示
android:hint="請輸入號碼"
2. 完成點(diǎn)擊事件
- 先給Button組件設(shè)置onClick屬性
onClick="send"
- 在Activity中定義此方法
public void send(View v){}
3. 獲取到用戶輸入的號碼和內(nèi)容
EditText et_phone = (EditText) findViewById(R.id.et_phone);
EditText et_content = (EditText) findViewById(R.id.et_content);
String phone = et_phone.getText().toString();
String content = et_content.getText().toString();
4. 調(diào)用發(fā)送短信的api
//調(diào)用發(fā)送短信的api
SmsManager sm = SmsManager.getDefault();
//發(fā)送短信
sm.sendTextMessage(phone, null, content, null, null);
-
添加權(quán)限
<uses-permission android:name="android.permission.SEND_SMS"/>
-
如果短信過長僚祷,需要拆分
List<String> smss = sm.divideMessage(content);
常用布局
線性布局
LinearLayout
-
指定各個節(jié)點(diǎn)的排列方向
android:orientation="horizontal"
-
設(shè)置右對齊
android:layout_gravity="right"
當(dāng)豎直布局時佛致,只能左右對齊和水平居中,頂部底部對齊豎直居中無效
當(dāng)水平布局時辙谜,只能頂部底部對齊和豎直居中
使用match_parent時注意不要把其他組件頂出去
-
線性布局非常重要的一個屬性:權(quán)重
android:layout_weight="1"
權(quán)重:按比例分配屏幕的剩余寬度或者高度