手機衛士專案(第二天)
1.自定義對話方塊
在layout資料夾下建立自定義對話方塊的樣式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white">
<TextView
android:textColor="@android:color/white"
android:background="@android:color/black"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="30dp"
android:text="設定密碼"/>
<EditText
android:hint="請輸入密碼"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:inputType="textPassword"
android:hint="請再次輸入密碼"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="確定"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="取消"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
在java程式碼裡寫 如果不像下面這麼些,2.3會出現黑色邊框
AlertDialog.Builder builder = new Builder(this);
AlertDialog dialog = builder.create();//自己建立一個對話方塊
dialog.setView(view, 0, 0, 0, 0);//第一個引數:載入哪個佈局 後面幾個引數是距離上下左右的邊距
dialog.show();
public class Md5Utils {
/**
* md5加密工具方法
*
* @param text
* @return
*/
public static String encode(String text) {
try {
MessageDigest digester = MessageDigest.getInstance("MD5");
byte[] result = digester.digest(text.getBytes());
StringBuffer sb = new StringBuffer();
for (byte b : result) {
int number = b & 0xff;// 加鹽
String hexStr = Integer.toHexString(number);
if (hexStr.length() == 1) {
sb.append("0");
}
sb.append(hexStr);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
// can't reach 不可能發生
return "";
}
}
}
3.選單設定和點選選單後的事件
(1)先設定Menu裡要顯示的item,在res目錄下的menu資料夾裡建立檔案
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/item_about"
android:title="關於...">
</item>
</menu>
(2)覆寫onCreateOptionsMenu和onOptionsItemSelected方法
public boolean onCreateOptionsMenu(Menu menu) {//建立Menu時執行改方法
//將xml檔案轉換成menu佈局
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.lost_find_menu, menu);//第一個引數:將要被轉換的xml檔案(在menu資料夾下) 第二個引數:轉換成選單物件後賦值給這個menu
return super.onCreateOptionsMenu(menu);//返回true才會建立menu
}
public boolean onOptionsItemSelected(MenuItem item) {//當點選Menu上的item的時候執行該方法
switch (item.getItemId()) {
case R.id.item_about:
Toast.makeText(getApplicationContext(), "關於...", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
4.在非Activity上下文裡開啟Activity,一定要設定flag
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
5.獲取SIM卡資訊,注意配置檢視手機狀態許可權 android.permission.READ_PHONE_STATE
TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);//電話管理器
String simNum = manager.getSimSerialNumber();
6.Activity之間切換的動畫效果
(1)在res目錄下建立anim資料夾建立檔案 (要配置4個檔案,顯示下一頁的進入和移出 顯示上一頁時的進入和移出 )
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0" >
<!--
duration:持續時間
fromXDelta:x起點位置
toXDelta:x終點位置
fromYDelta:y起點位置
toYDelta:y終點位置
-->
</translate>
手勢識別器:三大步
1.宣告一個手勢識別器
private GestureDetector mGestureDetector;
2.初始化手勢識別器(在onCreate中執行)
mGestureDetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){
//手指在螢幕上滑動時執行該方法
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
if(!(Math.abs(velocityX)<100)){//X軸速度大於100
if(e2.getRawX()-e1.getRawX()>200){//顯示上一個介面
pre(null);
return true;
}else if(e1.getRawX()-e2.getRawX()>200){//顯示下一個介面
next(null);
return true;
}
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
3.覆寫onTouchEvent方法(手指觸控螢幕的時候執行)
public boolean onTouchEvent(MotionEvent event) {//當手指觸控螢幕的時候就會呼叫該方法, MotionEvent是當前的觸控事件
mGestureDetector.onTouchEvent(event);//將當前的觸控事件,傳給手勢識別器的onFling回撥函式去執行
return super.onTouchEvent(event);
}
4.在開啟Activity後執行overridePendingTransition 此方法必須在startActivity或finish後執行
@Override
public void next(View view) {
Intent intent = new Intent(this,Setup2Activity.class);
startActivity(intent);
finish();
//此方法必須在startActivity 或者finish方法後邊
overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);
}
7.android.provider.Telephony.SMS_RECEIVED 接收簡訊廣播在4.2和4.3版本的時候ecpilse上是沒有提示的,但是可以手動寫,照樣識別。
8.播放音樂
//此方法已經自動呼叫了prepare()不能再手動呼叫
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.c);
mediaPlayer.setVolume(1.0f, 1.0f);//設定左聲道和右聲道的聲音為最大
//mediaPlayer.setLooping(true); 設定永久迴圈
mediaPlayer.start();
相關文章
- 手機衛士專案第三天
- 手機衛士專案(第一天)
- Android 專案實戰--手機衛士(實現splash)Android
- 360手機衛士怎麼進入微通訊錄
- 金山手機衛士正式版釋出永久免費
- Android實現仿360手機衛士懸浮窗效果Android
- 全球駭客大賽:360手機衛士研究員獲谷歌致謝谷歌
- 資料衛士
- 伺服器安全衛士伺服器
- 360兒童衛士智慧手錶3代:航天級定位系統
- 007、贈衛八處士
- 360主機衛士Windows版新增黑鏈監控功能Windows
- 360安全衛士的替代軟體
- 360安全衛士怎麼設定電腦定時關機
- 網路安全衛士X-KEY,讓檔案更私密(轉)
- 360安全衛士阻止SQL Server安裝SQLServer
- 360安全衛士如何設定白名單
- 中國400萬家用WiFi不安全 360手機衛士推十大解決方案WiFi
- 溼熱消毒有哪些好處?璽消衛士給你專業回答
- 團隊專案衝刺第二天
- 嘶吼專訪 | 天空衛士楊明非:順勢而為,以人為本的資料安全捍衛者
- 專注資料安全 天空衛士何以應對雲端資料安全威脅?
- 天空衛士API資料安全解決方案API
- 冬奧網路安全衛士招募正式啟動!
- 2345安全衛士1.0版本正式
- 分析周鴻禕的安全衛士360[轉]
- 智慧門鈴攝像頭 一個守衛家園的忠誠衛士
- AppAnnie:2015年7月iQIYI和360手機衛士應用下載量增長顯著APP
- 360安全衛士與win10衝突怎麼辦_360安全衛士與win10衝突如何處理Win10
- 360安全衛士靜態頁面(html+css)HTMLCSS
- 天空衛士為集度智慧汽車系上“安全帶”
- 天空衛士資料安全智慧化走進香港
- IT專案經理手冊之——提高員工士氣的五個例項(轉)
- Angular專案路由配置與導航守衛Angular路由
- 無線端專案 手機初步預覽
- 團隊專案後續階段第二天
- 你還在為沒有專案做而煩惱嗎?有哪些值得推薦的 Java 練手專案(第二天)Java
- 金山衛士1.0Beta釋出更小更快更安全