編輯:Android開發實例
這些最佳實踐包括交互設計功能,性能,安全性和私隱,兼容性,測試,分發和貨幣化的提示。它們被縮小並列示如下。
每個文本字段都用於不同的工作。例如,一些文本字段是文本,有些是用於數字。如果它是數字那麼最好是顯示數字鍵盤時文本字段居中。其語法如下。
<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone" />
其他然後,如果字段是密碼,那麼它必須顯示密碼提示,這樣用戶可以很容易地記住密碼。它可以實現為如下:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" />
但是也有一些在應用程序後台運行的某些工作在應用程序。這些工作可能是獲取從互聯網上的一些數據或東西,播放音樂等它建議在長等待任務不應在UI線程和相當的後台由服務或異步工作完成。
兩者都用來做後台任務,但服務不會受到大多數用戶接口名為生命周期事件,因此在它繼續的情況下,將關閉AsyncTask運行。
應用程序的性能應該是到達標記。但它執行不同的前端,但在後端時,它的設備被連接到一個電源或充電。充電可能是從USB和電線。
如果設備自己充電,建議更新應用程序的設置,如果有的話,如每當設備連接最大化刷新率。這是可以做到的。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); // Are we charging / charged? Full or charging. int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); // How are we charging? From AC or USB. int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
它是應用程序應該是安全的,而不是僅重視應用,但用戶數據和應用程序數據也應得到保障。安全性可提高受以下因素。
使用內部存儲而不是外部存儲應用程序的文件
盡可能使用內容提供商
連接到網絡時使用SSL
使用適當的權限來訪問設備的不同功能
下面的例子演示了一些開發Android應用程序時應該遵循的最佳實踐。創建一個基本的應用程序,允許指定如何使用文本字段,以及如何通過檢查手機的充電狀態,以提高性能。
為了試驗這個例子,需要在實際設備上運行。
這裡為 src/com.yiibai.bestpractices/MainActivity.java 的內容
package com.example.bestpractices; import android.os.BatteryManager; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button Check; private BatteryManager battery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Check = (Button)findViewById(R.id.button1); } public void check(View view){ IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = registerReceiver(null, ifilter); int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; // How are we charging? int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; if(usbCharge){ Toast.makeText(getApplicationContext(),"Mobile is charging on USB",Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(),"Mobile is charging on AC",Toast.LENGTH_LONG).show(); } } @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; } }
以下是文件 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_parent" 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" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="22dp" android:layout_marginTop="20dp" android:text="@string/username" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:ems="10" android:inputType="textCapSentences|textAutoCorrect" > <requestFocus /> </EditText> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="34dp" android:ems="10" android:hint="@string/password_hint" android:inputType="textPassword" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView1" android:layout_below="@+id/message" android:layout_marginTop="50dp" android:text="@string/password" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/password" android:layout_centerHorizontal="true" android:layout_marginTop="34dp" android:onClick="check" android:text="@string/check" /> </RelativeLayout>
以下是文件 Strings.xml 的內容:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">BestPractices</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="username">Username</string> <string name="password">Password</string> <string name="password_hint">Hello world!</string> <string name="check">Charging check</string> </resources>
以下是文件 AndroidManifest.xml 的內容:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yiibai.bestpractices" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.yiibai.bestpractices.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
讓我們試著運行BestPractices應用程序。啟動應用程序之前會顯示如下窗口,選擇要運行的Android應用程序的選項。
選擇移動設備作為一個選項,然後檢看移動設備將顯示如下畫面。
現在,只需鍵入的用戶名字段,會看到內置的詞典建議將啟動顯示出來。這如下所示。
現在,將看到提示在密碼字段。它盡快將消失,開始寫入的字段。它如下所示。
最後,只需將設備連接到AC線或USB線,按下充電復選按鈕。就我而言,通過USB電纜連接PC,以便它顯示以下信息。
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android 調用自帶的錄制音頻程序 Android中有自帶的音頻錄制程序,我們可以通過指定一個Action MediaStore.Audio.Media.RE
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩