当前位置: 移动技术网 > IT编程>移动开发>Android > Android自定义密码样式 黑点转换成特殊字符

Android自定义密码样式 黑点转换成特殊字符

2019年07月24日  | 移动技术网IT编程  | 我要评论

超级岛主txt下载,ngacn.cc,宠物猫的品种价格

本文为大家分享了android自定义密码样式的制作代码,黑点换成¥、%等特殊字符,供大家参考,具体内容如下

复制下面代码即可:

布局:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  >

  <edittext
    android:id="@+id/et"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_margintop="25dp"
    android:hint="请输入数据"
    />

  <linearlayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">

    <button
      android:id="@+id/password"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:text="密文"/>

    <button
      android:id="@+id/show_text"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_marginleft="20dp"
      android:layout_weight="1"
      android:text="明文"/>
  </linearlayout>

  <button
    android:id="@+id/clean"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:text="清除"/>
</linearlayout>

activity:

package com.chen;


import android.app.activity;
import android.os.bundle;
import android.text.method.hidereturnstransformationmethod;
import android.text.method.passwordtransformationmethod;
import android.view.view;
import android.widget.button;
import android.widget.edittext;

public class mainactivity extends activity {

  button psd;
  button show_text;
  edittext et;
  button clean;

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);

    //将输入框中的内容变为密码格式
    psd = (button) findviewbyid(r.id.password);
    //将密码变为明文
    show_text = (button) findviewbyid(r.id.show_text);
    //清空输入框
    clean = (button) findviewbyid(r.id.clean);
    et = (edittext) findviewbyid(r.id.et);
    show_text.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        //获取编辑框中的数据内容
        string context = et.gettext().tostring();
        //将密码变为明文,这里不用setinputtype
        et.settransformationmethod(hidereturnstransformationmethod.getinstance());
        //设置光标位置在数据最后
        et.setselection(context.length());
      }
    });
    psd.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        //获取编辑框中的数据内容
        string context = et.gettext().tostring();
        //将数据变为指定样式的密码
        et.settransformationmethod(new asteriskpasswordtransformationmethod());
        //设置光标位置在数据最后
        et.setselection(context.length());
      }
    });
    clean.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        et.settext("");
      }
    });

  }

  private class asteriskpasswordtransformationmethod extends passwordtransformationmethod {
    @override
    public charsequence gettransformation(charsequence source, view view) {
      return new passwordcharsequence(source);
    }

    private class passwordcharsequence implements charsequence {
      private charsequence msource;

      public passwordcharsequence(charsequence source) {
        msource = source; // store char sequence
      }

      public char charat(int index) {
        /*
        当在编辑框中输入1的时候,会连续打印0...
        当在编辑框中继续输入2的时候,会连续01...
        不影响功能使用,但是出现原因不知,待解决
         */
        system.out.println("-----" + index + "-----");
        //这里返回的char,就是密码的样式,注意,是char类型的
        return '$'; // this is the important part
      }

      public int length() {
        return msource.length(); // return default
      }

      public charsequence subsequence(int start, int end) {
        return msource.subsequence(start, end); // return default
      }
    }
  }

}


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网