最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android仿支付寶密碼輸入框效果

 更新時間:2017年12月04日 09:07:16   作者:zhoushenxian  
這篇文章主要為大家詳細(xì)介紹了android仿支付寶密碼輸入框效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了android仿支付寶密碼輸入框展示的具體代碼,供大家參考,具體內(nèi)容如下

這個沒什么好分析的,就是一些基本的繪制什么線,矩形什么的,看代碼更具體

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 >
 <com.example.custompasswordview.PasswordView
  android:id="@+id/passwordview"
  android:layout_width="match_parent"
  android:layout_height="105px"
  android:layout_marginTop="100px"
  android:layout_marginLeft="20px"
  android:layout_marginRight="20px"
  android:inputType="number"
  android:cursorVisible="false"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:enabled="true"
  android:clickable="true"
   />
 <Button
  android:id="@+id/btn_pass_reset"
  android:layout_width="250px"
  android:layout_height="90px"
  android:text="重置"
  android:layout_below="@id/passwordview"
  android:layout_marginTop="20px"
  android:layout_marginLeft="40px"
  android:gravity="center"
  />
</RelativeLayout>

MainActivity.java

package com.example.custompasswordview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
 private Button btn_pass_reset;
 private PasswordView passwordview;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn_pass_reset = (Button) findViewById(R.id.btn_pass_reset);
  passwordview = (PasswordView) findViewById(R.id.passwordview);
  btn_pass_reset.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    passwordview.setEmpeyText();
   }
  });
 }
}

自定義EditText輸入框

package com.example.custompasswordview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;

/**
 * Created by Adminis on 2016/8/7.
 */
public class PasswordView extends EditText {
 private static final String TAG ="PasswordView" ;
 private Paint bordPaint;//外框畫筆
 private Paint linePaint;//線 的畫筆
 private Paint passTextPaint;//密碼畫筆
 private int width;
 private int height;
 private int passwordLength = 6;//代碼的長度
 private int textLength;
 private int radius = 15;
 public PasswordView(Context context) {
  this(context,null);
 }
 public PasswordView(Context context, AttributeSet attrs) {
  this(context, attrs,0);
 }

 public PasswordView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  initPaint();
 }

 /**
  * 初始化畫筆
  */
 private void initPaint() {
  setFocusable(true);
  bordPaint = new Paint();
  bordPaint.setStrokeWidth(8);
  bordPaint.setColor(Color.WHITE);
  bordPaint.setStyle(Paint.Style.FILL);

  linePaint = new Paint();
  linePaint.setColor(Color.parseColor("#838B8B"));
  linePaint.setStrokeWidth(4);

  passTextPaint = new Paint();
  passTextPaint.setColor(Color.parseColor("#000000"));
  passTextPaint.setStrokeWidth(12);

 }

 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  height = getMeasuredHeight();
  width = getMeasuredWidth();
  drawRoundRect(canvas);
  drawLine(canvas);
  drawTextPass(canvas);
 }

 /**
  * 繪制密碼
  * @param canvas
  */
 private void drawTextPass(Canvas canvas) {
  float cx, cy = height/ 2;
  float half = width / passwordLength / 2;
  for(int i = 0; i < textLength; i++) {
   cx = width * i / passwordLength + half;
   canvas.drawCircle(cx, cy, radius, passTextPaint);
  }
 }

 /**
  * 繪制線
  * @param canvas
  */
 private void drawLine(Canvas canvas) {
  for (int i = 1; i < passwordLength; i++) {
   float x = width * i / passwordLength;
   canvas.drawLine(x, 12, x, height-12, linePaint);
  }
 }
 /**
  * 繪制背景
  * @param canvas
  */
 private void drawRoundRect(Canvas canvas) {
   canvas.drawRoundRect(0,0,width,height,12,12,bordPaint);
 }
 @Override
 protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
  super.onTextChanged(text, start, lengthBefore, lengthAfter);
  this.textLength = text.toString().length();
  if(textLength==6){
   Toast.makeText(getContext(),"您設(shè)置的密碼為"+text,Toast.LENGTH_SHORT).show();
  }
  invalidate();
 }
 public void setEmpeyText(){
  setText("");
  invalidate();
 }
}


效果:

github:https://github.com/zhouguizhi/ZhiFuBaoPwdView

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Kotlin StateFlow單數(shù)據(jù)更新熱流設(shè)計與使用介紹

    Kotlin StateFlow單數(shù)據(jù)更新熱流設(shè)計與使用介紹

    StateFlow當(dāng)值發(fā)生變化,就會將值發(fā)送出去,下流就可以接收到新值。在某些場景下,StateFlow比LiveData更適用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • Android ViewPager動態(tài)加載問題

    Android ViewPager動態(tài)加載問題

    這篇文章主要介紹了Android ViewPager動態(tài)加載問題,需要的朋友可以參考下
    2017-03-03
  • 如何在Android中實現(xiàn)漸顯按鈕的左右滑動效果

    如何在Android中實現(xiàn)漸顯按鈕的左右滑動效果

    本篇文章是對在Android中實現(xiàn)漸顯按鈕的左右滑動效果進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android?DialogFragment使用之基類封裝

    Android?DialogFragment使用之基類封裝

    這篇文章主要介紹了Android?DialogFragment使用之基類封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 利用Jetpack?Compose復(fù)刻游戲Flappy?Bird

    利用Jetpack?Compose復(fù)刻游戲Flappy?Bird

    Flappy?Bird是13年紅極一時的小游戲,其簡單有趣的玩法和變態(tài)的難度形成了強(qiáng)烈反差,引發(fā)全球玩家競相把玩!本文將通過Jetpack?Compose復(fù)刻這一游戲,感興趣的小伙伴可以了解一下
    2022-02-02
  • Android布局實現(xiàn)圓角邊框效果

    Android布局實現(xiàn)圓角邊框效果

    這篇文章主要介紹了Android布局實現(xiàn)圓角邊框效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android自定義控件打造絢麗平行空間引導(dǎo)頁

    Android自定義控件打造絢麗平行空間引導(dǎo)頁

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件打造絢麗平行空間引導(dǎo)頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android 定時器實現(xiàn)圖片的變換

    Android 定時器實現(xiàn)圖片的變換

    這篇文章主要介紹了Android 定時器實現(xiàn)圖片的變換的相關(guān)資料,利用到定時器和handler,message的結(jié)合實現(xiàn)改功能,需要的朋友可以參考下
    2017-08-08
  • 使用Retrofit下載文件并實現(xiàn)進(jìn)度監(jiān)聽的示例

    使用Retrofit下載文件并實現(xiàn)進(jìn)度監(jiān)聽的示例

    這篇文章主要介紹了使用Retrofit下載文件并實現(xiàn)進(jìn)度監(jiān)聽的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android實現(xiàn)音樂視頻播放

    Android實現(xiàn)音樂視頻播放

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)音樂視頻播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評論

西林县| 隆德县| 宣化县| 剑阁县| 泰宁县| 武隆县| 靖西县| 施秉县| 灵宝市| 镇平县| 荥经县| 炉霍县| 诏安县| 高密市| 鄂温| 岚皋县| 于都县| 宁德市| 上虞市| 吐鲁番市| 齐齐哈尔市| 晋中市| 屯留县| 天水市| 黎川县| 富宁县| 台安县| 广元市| 祁阳县| 峨边| 福鼎市| 大悟县| 贵阳市| 绥滨县| 察隅县| 闻喜县| 辛集市| 临猗县| 吐鲁番市| 徐水县| 五台县|