質問: 以下の論文(パズル認証)のアプリを実装しようと考えているのですけど、
回答: 例えば、上段に1,2,3,4と数値を並べてOKを押せば認証成功する というような感じでしょうか? ソースを確認しました 画像の位置が、以下2種類の操作で別々の移動方法となり、管理ができない状況です。 ・ドラッグによるImageViewそのものを移動 ・シャッフルによるリソース情報のみの移動 最終的にR.id.panel1、R.id.panel2、R.id.panel3、R.id.panel4のIDをもつViewが上段に順に並べばOKとすればよいので シャッフルでのリソース入れ替えを辞めた方が良いです。 シャッフルで入れ替えるのはViewにしましょう。 フィッシャー–イェーツのシャッフルアルゴリズムとか使えば、 すでに実装されているswapメソッドとの組み合わせて実現できると思います。 あとは、位置情報ですね GridLayoutは各Viewの現在位置を覚えていません。 Viewのタグ機能を使って、位置情報を記録しておきましょう swap時に、位置情報も入れ替えればよいです。 例えば、位置情報を座標とした場合 認証評価する際に IDが「panel1」のViewのタグ情報が「(0, 0)」 IDが「panel2」のViewのタグ情報が「(0, 1)」 IDが「panel3」のViewのタグ情報が「(0, 2)」 IDが「panel4」のViewのタグ情報が「(0, 3)」 となっていれば、認証OKとする。 という風にできますね