Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android筆記一

Android筆記一

編輯:關於Android編程

1、一些文件夾的作用=====================================
res/assets 文件夾放音樂,不會被編譯
res/raw   放音樂,會被編譯
res/drawable  放圖片

2、主Activity聲明=====================================



3、隱藏標題欄=====================================
在 onCreate()方法中添加如下代碼:
requestWindowFeature(Window.FEATURE_NO_TITLE)
標題欄,注意這句代碼一定要在 setContentView()之前執行

4、Toast=====================================
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "You clicked Button 1",
Toast.LENGTH_SHORT).show();
}

5、在活動中使用 Menu=====================================

6、播放音樂=====================================

7、銷毀一個Activity
兩種方式  :第一種 按back鍵就可以銷毀當前活動
第二種代碼如下
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

8、使用 Intent 在活動之間穿梭=====================================
使用顯式 Intent
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
});
使用隱式 Intent
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
}
});

9、調用系統浏覽器=====================================
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});

10、調用系統撥號界面=====================================
button1.setOnClickListener(new OnClickListener() {
@Override
第 2 章 先從看得到的入手,探究活動
51
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});

11、向下一個活動傳遞數據=====================================
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", data);
startActivity(intent);
}
});
下一個活動接收數據
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d("SecondActivity", data);
}

12、返回數據給上一個活動=====================================
第一個活動代碼
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
}
});
第二個活動代碼
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
然後第一個活動獲取返回數據重寫下面方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity", returnedData);
}
break;
default:
}
}
13、活動的生命周期
開始運行主活動
依次運行 
onCreate
onStart
onResume

然後點擊一個按鈕跳轉到另一個活動(完全蓋住主活動)
此時運行
onPause
onStop

然後返回
就會
onRestart
onStart
onResume

再點擊另一個按鈕彈出框
此時就會
onPause

然後再返回
只有
onResume

最後主活動返回
onPause
onStop
onDestroy

13、活動被回收了怎麼辦=====================================
如果上一個活動被回收,那麼返回上一個活動依然會看見,但是這時
調用的不是onRestart 而是 onCreate 但是這樣不能保存數據會影響用戶體驗
好在有另一個方法可以用來回收前調用保存數據,onSaveInstanceState(Bundle outState)
數據保存在Bundle對象中
那麼如何取出Bundle , 就在onCreate(Bundle savedInstanceState)

14、活動的啟動模式
standard 默認模式,傻瓜添加模式,該模式系統不會在乎這個活動是否已經在返回棧中存在,啟動一次添加一次

singleTop 單棧頂模式,該模式如果當前活動在棧頂就不會再添加了,但是如果不是在棧頂還會添加

singleTask 單活動模式,全棧只出現一次

singleInstance 這個能實現應用程序共享活動  因為它用了特殊的共享返回棧

15、如果R文件丟失=====================================
Build--> Rebuild Project

16、廣播的類型==============================
  
標准廣播  完全異步 發出廣播之後所有接收器同時接收
有序廣播  同步  優先級高的接收器先接收 
注意:廣播是跨進程的,即一個應用發出的廣播,不同的應用都可以接收

17、動態注冊廣播接收器==============================
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
}
最後要記得,動態注冊的廣播接收器一定都要取消注冊才行。

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
18、創建廣播接收器=====================================
只需要新建一個類, 讓它繼承自BroadcastReceiver,
並重寫父類的 onReceive()方法就行了。 這樣當有廣播到來時, onReceive()方法就會得到執行,
具體的邏輯就可以在這個方法中處理。
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

Toast.makeText(context, "network changes",
Toast.LENGTH_SHORT).show();
}
}

19、注冊靜態廣播接收器==============================







20、發送自定義廣播===================================
一、發送標准廣播
先注冊一個靜態廣播接收器
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in MyBroadcastReceiver",Toast.LENGTH_SHORT).show();
}
}






發送廣播代碼如下
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.
MY_BROADCAST");
sendBroadcast(intent);
}
});

二、發送有序廣播
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.
MY_BROADCAST");
sendOrderedBroadcast(intent, null);
}
});

更改有序廣播先後順序





可以看到,我們通過 android:priority 屬性給廣播接收器設置了優先級,優先級比較高的
廣播接收器就可以先收到廣播。 這裡將 MyBroadcastReceiver的優先級設成了 100

三、廣播截斷
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in MyBroadcastReceive",
Toast.LENGTH_SHORT).show();
abortBroadcast();
}
}
如果在 onReceive()方法中調用了 abortBroadcast()方法, 就表示將這條廣播截斷, 後面的
廣播接收器將無法再接收到這條廣播

21、使用本地廣播=====================================
為了能夠簡單地解決廣播的安全性問題,Android 引入了一套本地廣播機制,使用這個
機制發出的廣播只能夠在應用程序的內部進行傳遞, 並且廣播接收器也只能接收來自本應用
程序發出的廣播,這樣所有的安全性問題就都不存在了。
本地廣播的用法並不復雜,主要就是使用了一個 LocalBroadcastManager 來對廣播進行
管理,並提供了發送廣播和注冊廣播接收器的方法。
public class MainActivity extends Activity {
private IntentFilter intentFilter;
private LocalReceiver localReceiver;
private LocalBroadcastManager localBroadcastManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
localBroadcastManager = LocalBroadcastManager.getInstance(this);
//  獲取實例
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.
LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent); //  發送本地廣播
}
});
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
localReceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver, intentFilter);
//  注冊本地廣播監聽器
}
@Override
protected void onDestroy() {
super.onDestroy();
localBroadcastManager.unregisterReceiver(localReceiver);
}
class LocalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received local broadcast",
Toast.LENGTH_SHORT).show();
}
}
}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved