【Android開發(fā)】圖案解鎖Demo(中)——點亮圖標及記錄密碼思路分析

心得感悟

跟著老師寫這個Demo姻灶,通過這個Demo我真的學到很多谎仲,比如點亮線的方法幻梯。感覺編程也很像頭腦風暴戳寸,因為一個Demo其實有很多種寫法呈驶,了解到新思路新方法的時候就會特別開心。暑假的培訓就告一段落了疫鹊,離開學還有幾天的假期袖瞻,爭取多敲幾次,希望有一天我也能自己完完整整地寫完它拆吆。


內(nèi)容簡概

  • 一聋迎、整理思路
  • 二、處理觸摸事件
  • 三锈拨、點亮觸摸點
  • 四砌庄、點亮線
  • 五、保存密碼

一奕枢、整理思路

在上一篇文章我們已經(jīng)實現(xiàn)了將九個點娄昆、橫、豎缝彬、斜線添加到界面中并隱藏萌焰。接下來我們希望我們能夠與它產(chǎn)生互動,就是說當我們點擊一個點時谷浅,它能夠對我們的觸摸作出反應扒俯,那么這個觸摸事件是如何實現(xiàn)的呢?

二一疯、處理觸摸事件

在Android里撼玄,事件處理有兩種方式,一種是監(jiān)聽墩邀,另一種是回調(diào)掌猛。這里我們采用回調(diào)處理事件

監(jiān)聽處理事件

回調(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詳解

?


結語

源代碼以及最終效果圖我放在下一篇文章中铲咨,歡迎前去查看躲胳。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜓洪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子坯苹,更是在濱河造成了極大的恐慌隆檀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恐仑,居然都是意外死亡泉坐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門裳仆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腕让,“玉大人,你說我怎么就攤上這事歧斟〈客瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵静袖,是天一觀的道長觉鼻。 經(jīng)常有香客問我,道長队橙,這世上最難降的妖魔是什么坠陈? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮捐康,結果婚禮上仇矾,老公的妹妹穿的比我還像新娘。我一直安慰自己解总,他們只是感情好若未,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著倾鲫,像睡著了一般粗合。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乌昔,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天隙疚,我揣著相機與錄音,去河邊找鬼磕道。 笑死供屉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的溺蕉。 我是一名探鬼主播伶丐,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疯特!你這毒婦竟也來了哗魂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤漓雅,失蹤者是張志新(化名)和其女友劉穎录别,沒想到半個月后朽色,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡组题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年葫男,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崔列。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡梢褐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赵讯,到底是詐尸還是另有隱情利职,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布瘦癌,位于F島的核電站猪贪,受9級特大地震影響,放射性物質發(fā)生泄漏讯私。R本人自食惡果不足惜热押,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斤寇。 院中可真熱鬧桶癣,春花似錦、人聲如沸娘锁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莫秆。三九已至间雀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镊屎,已是汗流浹背惹挟。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缝驳,地道東北人连锯。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像用狱,于是被迫代替她去往敵國和親运怖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,101評論 1 32
  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件署海,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評論 1 11
  • 第3章 基本概念 3.1 語法 3.2 關鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,128評論 0 21
  • 在iOS開發(fā)中經(jīng)常會涉及到觸摸事件吗购。本想自己總結一下,但是遇到了這篇文章砸狞,感覺總結的已經(jīng)很到位捻勉,特此轉載。作者:L...
    WQ_UESTC閱讀 6,010評論 4 26
  • 觸摸事件的生命周期 當我們手指觸碰屏幕的那一刻刀森,一個觸摸事件便產(chǎn)生了踱启。經(jīng)過進程間通信,觸摸事件被傳遞到合適的應用之...
    Gintok閱讀 1,354評論 0 3