簡介
此項目是基于SMS的智能短信開關操作系統,用于對高壓斷路器的狀態的顯示及控制。此項目是由本人獨立設計完成的,旨在給用戶以更好的視覺體驗及操作體驗。使用戶更加簡單方便地操作斷路器。
界面介紹
一.閃屏頁面

splash.png
-
閃屏頁面由一個ImageView和一個直接跳轉到mainactivity的Button組成,并隱藏狀態欄和虛擬按鍵。
//設置隱藏虛擬按鍵 img_splash.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); //設置隱藏狀態欄 img_splash.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); img_splash.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); img_splash.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE); img_splash.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
-
ImageView設置旋轉,漸變,縮放動畫
// 旋轉動畫 RotateAnimation animRotate = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animRotate.setDuration(5000);// 動畫時間 animRotate.setFillAfter(true);// 保持動畫結束狀態 // 縮放動畫 ScaleAnimation animScale = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animScale.setDuration(5000); animScale.setFillAfter(true);// 保持動畫結束狀態 // 漸變動畫 AlphaAnimation animAlpha = new AlphaAnimation(0, 1); animAlpha.setDuration(5000);// 動畫時間 animAlpha.setFillAfter(true);// 保持動畫結束狀態 // 動畫集合 AnimationSet set = new AnimationSet(true); set.addAnimation(animAlpha); set.addAnimation(animScale); set.addAnimation(animRotate); // 啟動動畫 rlRoot.startAnimation(set);`
且調用動畫的監聽事件,當動畫結束時自動跳轉到mainactivity
public void onAnimationEnd(Animation animation) {
Intent intent = new Intent(getApplicationContext(),
MainActivity.class);
startActivity(intent);
finish();// 結束當前頁面
}
二.主界面
1.聯系人界面

splash.png
- 主界面的聯系人頁由一個頂部自定義Toolbar,添加設備按鈕,ListView聯系人列表和右側的聯系人索引組成,且在第一次打開軟件時,自動創建數據庫用以保存聯系人數據。
- 點擊“添加設備”,將新建聯系人的數據到數據庫中。
- 長按ListView聯系人列表的某一項可對當前聯系人進行修改,刪除和查看。

splash.png
聯系人索引是利用漢字轉拼音的自定義類pinyin_utils將漢字轉成拼音并適配到相應的字母索引中,從而達到索引的目的。當聯系人名單過長時可通過點擊右側的索引字母快速到達相應的聯系人
-
當到達相應聯系人的位置后,屏幕中間會用自定義View來顯示當前所到達的字母位置。
2.設置定值界面

splash.png
由兩個TextView,兩個EidtText,三個按鈕組成。
TextView用來顯示聯系人信息和斷路器主控板發回的數據。
EditText用來設置需要發送數據的數值。
-
按鈕用來發送命令及查看定值定義表。
3.產品展示和關于界面

splash.png
-
產品展示界面有一個 ImageView + ViewPager 構成,利用ViewPager展示帶鏈接的ImageView的圖片。
/** * 由于ViewPager沒有setOnclickListener * 利用setOnTouchListener設置ViewPager點擊事件,檢測ACTION_UP事件實現點擊事件功能 */ myViewPager.setOnTouchListener(new View.OnTouchListener() { int flage = 0; @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: flage = 0; break; case MotionEvent.ACTION_MOVE: flage = 1; break; case MotionEvent.ACTION_UP: if (flage == 0) { int item = myViewPager.getCurrentItem(); if (item == 0) { Uri uri = Uri.parse("http://gtesh.com/03600043/wap/picshow.php?id=207436"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); } else if (item == 1) { Uri uri = Uri.parse("http://gtesh.com/03600043/wap/picshow.php?id=207438"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); } else if (item == 2) { Uri uri = Uri.parse("http://gtesh.com/03600043/wap/picshow.php?id=207410"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); } break; } } return false; } });
-
并且利用小圓點指示當前圖片的位置
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // 當頁面滑動過程中的回調 System.out.println("當前位置:" + position + ";移動偏移百分比:" + positionOffset); // 更新小紅點距離 int leftMargin = (int) (mPointDis * positionOffset) + position * mPointDis;// 計算小紅點當前的左邊距 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) iv_red_point .getLayoutParams(); params.leftMargin = leftMargin; // 修改左邊距 // 重新設置布局參數 iv_red_point.setLayoutParams(params); }

splash.png
- 關于界面,利用EditText顯示主要信息,且點擊網址可鏈接到網站,掃描二維碼可下載此軟件。