心得感悟
跟著老師寫這個Demo姻灶,通過這個Demo我真的學到很多谎仲,比如點亮線的方法幻梯。感覺編程也很像頭腦風暴戳寸,因為一個Demo其實有很多種寫法呈驶,了解到新思路新方法的時候就會特別開心。暑假的培訓就告一段落了疫鹊,離開學還有幾天的假期袖瞻,爭取多敲幾次,希望有一天我也能自己完完整整地寫完它拆吆。
內(nèi)容簡概
- 一聋迎、整理思路
- 二、處理觸摸事件
- 三锈拨、點亮觸摸點
- 四砌庄、點亮線
- 五、保存密碼
一奕枢、整理思路
在上一篇文章我們已經(jīng)實現(xiàn)了將九個點娄昆、橫、豎缝彬、斜線添加到界面中并隱藏萌焰。接下來我們希望我們能夠與它產(chǎn)生互動,就是說當我們點擊一個點時谷浅,它能夠對我們的觸摸作出反應扒俯,那么這個觸摸事件是如何實現(xiàn)的呢?
二一疯、處理觸摸事件
在Android里撼玄,事件處理有兩種方式,一種是監(jiān)聽墩邀,另一種是回調(diào)掌猛。這里我們采用回調(diào)處理事件
。
這個Demo中眉睹,我們的觸摸分為三種:
按下(Down) | 移動(Move) | 松手(Up) |
---|
既然要判斷荔茬,我們可以通過switch
方法實現(xiàn)。寫一個onTouchEvent
方法竹海,用來管理觸摸事件慕蔚。
@Override
public boolean onTouchEvent(MotionEvent event) {
// 獲取事件的類型
int action = event.getAction();
// 判斷是什么事件
switch (action){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
// 移動
break;
case MotionEvent.ACTION_UP:
// 離開
break;
default:
break;
}
return true;
}
觸摸的基本框架搭建好了,那接下來就該完成不同的觸摸對應的事件斋配。
觸摸 | 事件 |
---|---|
按下(Down) | 觸摸點被點亮 |
移動(Move) | 點亮更多的點和線 |
松手(Up) | 隱藏所有被點亮圖標 |
三孔飒、點亮觸摸點
想要點亮觸摸點灌闺,這就需要用到一點數(shù)學知識了。只要我們計算出點的圖標的大小范圍坏瞄,再判斷我們的觸摸點是否在這個點的圖標的范圍內(nèi)
菩鲜。
但我們在添加圖標(上一篇文章)時,已經(jīng)計算過每個點的位置了惦积,故可以直接用一個數(shù)組dotsList
直接保存每個點接校,再用一個數(shù)組保存觸摸點
,如果二者一致狮崩,則該點被點亮蛛勉。
因為手機會自動在頂部添加一個狀態(tài)欄,導致觸摸的系統(tǒng)坐標和我們的界面坐標不一致睦柴,從而導致出現(xiàn)偏移诽凌。這時更換系統(tǒng)默認的坐標系
,將新的坐標系建立在我們的界面上坦敌。
// 寫一個方法 處理判斷觸摸點是否在某個控件內(nèi)部
public ImageView dotOfTouch(float x ,float y ) {
// 遍歷數(shù)組
for (ImageView dot:dotsList){
// 獲取這個dot相對于屏幕的XY(建立新的坐標系)
int[] loc = new int[2];
dot.getLocationOnScreen(loc);
int dx = loc[0];
int dy = loc[1];
// 獲取右邊的偏移量
int r = dx + dot.getWidth();
// 獲取最底部的偏移量
int b = dy + dot.getHeight();
// 判斷這個點是否在這個范圍內(nèi)
if ((x <= r && x >= dx) && (y <= b && y >= dy)){
return dot;
}
}
return null;
}
四侣诵、點亮線
如果點亮線也使用判斷觸摸范圍的方法,那就太復雜太麻煩了狱窘,那有什么更好的辦法嗎杜顺?我們其實可以借鑒一下密碼解鎖,圖案解鎖也是九個按鍵蘸炸,我們可以給每個點賦值躬络,連接兩點的線賦值為兩點值的拼接
。
滑動的起始點不同搭儒,故每根線有兩個值
穷当。我們同樣用一個數(shù)組來保存所有線的值
,再與保存的觸摸點的數(shù)組對比淹禾,如果里面有該線的值馁菜,則該線被點亮。
五铃岔、保存密碼
之前我們已經(jīng)學過如何用文件保存密碼汪疮,這次我們用SharedPreferences
方法來保存。(但實際其根本也是通過文件保存)
這里有一篇文件介紹得很仔細德撬,想了解該方法的朋友可以點擊查看:
SharedPreferences詳解 |
---|
?
結語
源代碼以及最終效果圖我放在下一篇文章中铲咨,歡迎前去查看躲胳。