Androidのカスタムビューは、完全な検証を達成するために、スライダをドラッグ

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/Utzw0p0985/article/details/98548587

この記事では、長く読んで10分程度です

この効果は疑問の惑星のスターフレンドから来ています:

640?wx_fmt = PNG      

効果から週末は少しを達成し、実際には、この効果は、一般などのWeb、ほとんどの携帯電話アプリケーション、またはSMS確認コードに検証される、またはWebViewのが有効でJSをロードしていますが、ビューの外観をカスタマイズしたい、ここで私は私にしていますアイデアのカスタムビューを作成しますが、Siluハに焦点を当て、オープンソースを書きたくない、多くの詳細なし注意、まず私たちは、検証コードのこの成分を分析します

【選択図。

図2.欠員

図3の動き

4.成功のヒント

5.プログレスバーのスライダー

だから我々はまず、PictureVと呼ばれる、それの背景を描画する最初のビューを作成します。

640?wx_fmt = JPEG      

私たちは最終的には、画像の大きさを確認していないので、mBitmapはbgBitmapに記入させ、mBitmapとして画像をロードし、その後、同じサイズがbgBitmapの幅と高さを制御し作成するためにここにいることはどのくらいで、それほどcreateBitmapによって作成されました以下の結果を示し、最後にbgBitmapビューに描かれた高幅のキャンバスを見ます:

640?wx_fmt = PNG      

その後、我々はコードを見て、私は描画する小さな箱を見つけることができます欠員の絵を描き始めました。

640?wx_fmt = JPEG      

空のボックスを描くだけで、私は彼がデフォルトで表示される場所の計算に続いて、正方形、つまり、あることに気づいたので、私は、幅に対する高さの小さな正方形の幅にnullBitmapを取得し、ここだけで罰金を引き出すために画像をロードする必要があり、 LINE_W、LINE_H、もちろん、あなたが、これは同じ理由でも、ダイナミックランダムであることができ、実行してみてください:

640?wx_fmt = PNG      

その後、我々はボックスを描画する必要があると次のように、空白のボックスの場所を傍受するために移動し、ボックスを見ることができます:

640?wx_fmt = JPEG      

由于移动的方块是需要截取空白处的,所以我们还是利用了createBitmap创建一个新的位图,他的高宽就是我们的空白块高宽,并且他的大小是我们之前绘制空白块的宽度,也就是CARD_SIZE,这里要注意的是我们绘制位图的时候x轴,也就是平行线需要使用一个变量来表示,等一下滑动的时候要动态修改的,来看下效果:

640?wx_fmt = PNG      

这个效果看起来还是不错的,我们现在需要其实可以处理滑动事件了,因为我们这个案例是支持手势滑动的,来看下Touch的代码:

640?wx_fmt = JPEG      

这个方法中不仅处理了滑动事件,也处理了计时的任务,我们在按下的时候开始计时,当抬起的时候则关闭计时,这个时候就知道你移动一次所需要的时间,方便我们绘制结果提示,接着来看move方法吧,首先我们的拖动不能超过屏幕左右侧,所以我们左侧直接大于0,右侧的话则需要屏幕宽度减去方块大小,才赋值给moveX,然后刷新一下View就可以看到效果了,我们来看下Gif图片:

640?wx_fmt = GIF      

当然,MOVE处理移动,那么UP就要处理结果了,我需要知道你到底成功了没有,那么我们可以看到,在UP中,我们首先先remove掉计时器,不管你成功与否,这一次的计时算是结束了,然后我们判断你的移动块是否在空白块的位置,也就是LINE_W和LINE_H,这里我设置了一个errorValue 误差值,防止一些手残党对不准,当位置吻合,说明移动成功了,那我们通过接口通知外部调用对象,并且这里有一个变量isSucceed设置为true再刷新,是为了onDraw里的绘制成功提示:

640?wx_fmt = PNG      

moveTime就是我们计算的时间了,来看下drawSucceedText这个方法:

640?wx_fmt = JPEG      

这里绘制了两部分,一个是背景一个是文字,背景直接RectF,至于他的位置,我们是放在底部,所以mHeight减去我们希望的高度即可,然后文本就比较麻烦了,因为我们要绘制居中,通过测量得出baseY,文本绘制居中这个可以参考资料或者网上一些人的讲解

640?wx_fmt = PNG      

这样就可以实现绘制的文本居中了,然后我们运行看下效果

640?wx_fmt = PNG      

ここでは効果が良く見えることですが、我々はまだ私が直接ここに、スライドプログレスバーを実装する必要がスライドに従って達成され、直接の進捗状況、スライダーを描画進捗状況をドラッグして、勝ったダイレクトドローの面で通常されていましたが、怠惰な、右、達成するためにプログレスバーを使用して、いんちき~~

次に、どのようにそれを行うには?まず、シークバーを追加

640?wx_fmt = JPEG      

次いでPictureVは、二つの出力値は、最大値、現在の進行状況で、外部出力値にインターフェイスを追加します

640?wx_fmt = PNG      

そして、我々はmoveXで、最大値は幅がマイナス箱の大きさである、あなたは外国updateXというメソッドを追加する必要があり、現在の値をデフォルト

640?wx_fmt = PNG      

この方法は、外部コールのために提供し、私たちがイベントをスリップされる割り当てが成功したか失敗したかがでMainActivityの外観を呼び出すことができます判断moveX扱うだけでなく、同じです。

640?wx_fmt = JPEG      

営業成績を見てください:

640?wx_fmt = PNG      

実際には、何のタイマーがないので計算するここで時間がないことにACTION_DOWNを開始しますが、常に少し詳細を制御し、最終的にはすべてのコードPictureVを置くのが面倒、怠惰されています:

640?wx_fmt = JPEG      

最後に、GIFを実行します。

640?wx_fmt = GIF      

一般的な考え方はとても達成することではない、と何のパッケージ契約、ちょうど学生に実装を伝えたかった、当然のことながら、画像上の効果を達成するために、だけでなく、洗練される必要があり、あなた自身がこのビューに応じて変更悪魔に行くことができます何をすることができます、思考>デモ

デモをダウンロード:

https://pan.baidu.com/s/19sDesmsGyZJfsj0Xm3U96g

抽出コード:w0iw

利害関係者は、ああ、私の知識の惑星に参加することができ、あなただけのオリジナルああ読み取るためにクリックすることができます〜

惑星の右下隅には約この知識は、クリックの公開数で、私も[学ぶ]または公衆番号[こんにちはアンドロイド] [惑星]の知識を送信することができます

おすすめ

転載: blog.csdn.net/Utzw0p0985/article/details/98548587
おすすめ