精华内容
下载资源
问答
  • 如果total是个长的字符串,sub相对来说短得,就不是好事了。 要解决这个问题也简单,用intern()就可以了,如: public String getSub() {  String total=.......  return total.substring(0,1)....

     

    String aa = "15254545875";
    aa = aa.substring(0, 3) + "****" + aa.substring(7, 11);
    mText.setHint(aa);
    


    由方法中的substring方法引申出了一个问题,substring()是否会重新创建出一个新的string对象?在下面找到了问题答案。
    
    substring()返回的字符串并不会真正复制原字符串的byte数组的一部分,而只是指向原字符串的byte数组的某个区间,这个特性决定了它的执行效率是很不错的,在内存使用方面则根据具体情况可能有两极化的表现。
    一般来说,由于substring()没有为子字符串申请新的空间,它有节约内存空间的作用。
    但在有些情况下,它反而浪费内存空间,因为它会导致它所基于的原字符串无法释放,从而不能被垃圾回收,如:
    public String getSub() {
      String total=.......
      return total.substring(0,1);
    }
    String sub = getSub();
    total本来是个局部变量,getSub()结束就可以被释放,但由于sub的存在,它无法被释放。如果total是个很长的字符串,sub相对来说短得多,就不是好事了。
    要解决这个问题也很简单,用intern()就可以了,如: public String getSub() {   String total=.......   return total.substring(0,1).intern(); } String sub = getSub(); 这时系统会为sub的数据单独开辟一个独立的内存空间,原字符串total在getSub()结束就可被垃圾回收了。 总的来说,还是要具体情况具体分析,灵活运用,并没有一定的答案,关键是理解背后的机制。

    展开全文
  • // 为了能表示更多字符,各厂商制定了很多种ASCII码的扩展规范。 // 所以129~256不同的机器或不同的编辑框显示的字符都有可能不同 //--------------------------------------------------------------------------...

    源码下载地址 http://pan.baidu.com/s/1hrIguaS

    使用平台 Microsoft visual studio 2010及以上

    VCShowPass.rc

    // Microsoft Visual C++ generated resource script.
    //
    #include "resource.h"
    
    #define APSTUDIO_READONLY_SYMBOLS
    /
    //
    // Generated from the TEXTINCLUDE 2 resource.
    //
    #include "afxres.h"
    
    /
    #undef APSTUDIO_READONLY_SYMBOLS
    
    /
    // 中文(简体,中国) resources
    
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    #pragma code_page(936)
    
    #ifdef APSTUDIO_INVOKED
    /
    //
    // TEXTINCLUDE
    //
    
    1 TEXTINCLUDE 
    BEGIN
        "resource.h\0"
    END
    
    2 TEXTINCLUDE 
    BEGIN
        "#include ""afxres.h""\r\n"
        "\0"
    END
    
    3 TEXTINCLUDE 
    BEGIN
        "\r\n"
        "\0"
    END
    
    #endif    // APSTUDIO_INVOKED
    
    
    /
    //
    // Dialog
    //
    
    IDD_DIALOG1 DIALOGEX 400, 300, 161, 94
    STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
    EXSTYLE WS_EX_OVERLAPPEDWINDOW
    CAPTION "显示密码"
    FONT 9, "宋体", 0, 0, 0x1
    BEGIN
        DEFPUSHBUTTON   "显示密码",IDSHOWPASS,51,9,56,19,0,WS_EX_STATICEDGE
        PUSHBUTTON      "退 出",IDEXIT,51,37,56,18,0,WS_EX_STATICEDGE
        CTEXT           "雨绿凡尘 http://blog.csdn.net/chenlu5201314",IDC_STATIC1,10,70,146,20
        ICON            IDI_ICON1,IDC_STATIC,6,11,21,21
    END
    
    
    /
    //
    // Icon
    //
    
    // Icon with lowest ID value placed first to ensure application icon
    // remains consistent on all systems.
    IDI_ICON1               ICON                    "Res\\KEY.ICO"
    
    /
    //
    // MIDI
    //
    
    IDR_MIDI1               MIDI                    "Res\\on.mid"
    
    /
    //
    // Version
    //
    
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION 1,0,0,1
     PRODUCTVERSION 1,0,0,1
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x40004L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "080404b0"
            BEGIN
                VALUE "Comments", "http://blog.csdn.net/chenlu5201314"
                VALUE "CompanyName", "雨绿凡尘"
                VALUE "FileDescription", "在 2000/XP 里显示*的工具"
                VALUE "FileVersion", "1, 0, 0, 1"
                VALUE "ProductName", "ShowPass"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x804, 1200
        END
    END
    
    
    /
    //
    // DESIGNINFO
    //
    
    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO
    BEGIN
        IDD_DIALOG1, DIALOG
        BEGIN
            RIGHTMARGIN, 156
            BOTTOMMARGIN, 90
        END
    END
    #endif    // APSTUDIO_INVOKED
    
    #endif    // 中文(简体,中国) resources
    /
    
    
    
    #ifndef APSTUDIO_INVOKED
    /
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //
    
    
    /
    #endif    // not APSTUDIO_INVOKED
    

    resource.h

    //{{NO_DEPENDENCIES}}
    // Microsoft Visual C++ generated include file.
    // Used by VCShowPass.rc
    //
    #define IDD_DIALOG1                     101
    #define IDI_ICON1                       104
    #define IDR_MIDI1                       107
    #define IDC_STATIC1                     1000
    #define IDSHOWPASS                      1001
    #define IDEXIT                          1002
    
    // Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        108
    #define _APS_NEXT_COMMAND_VALUE         40001
    #define _APS_NEXT_CONTROL_VALUE         1003
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif
    

    main.h

    /**************************************************************************\
    *
    * 版权 (c) 2000 - 2100 雨绿凡尘。 保留所有权利。
    *
    * 模块名称:
    *
    *   main.h
    *
    * 摘    要:
    *	包含头文件、定义常用宏、声明函数
    \**************************************************************************/
    #ifndef __WINMAIN_H__
    #define __WINMAIN_H__
    
    //---------------------------------------------------------------------------
    // 包含 窗口ID,按钮ID,图标ID
    //---------------------------------------------------------------------------
    
    #include "resource.h"
    
    //---------------------------------------------------------------------------
    // 包含 _T
    //---------------------------------------------------------------------------
    
    #include <atlstr.h>
    
    //---------------------------------------------------------------------------
    //将密码替换成需要的字符 1~128
    //---------------------------------------------------------------------------
    
    #define SHOWCHAR_0		0 	//显示密码
    
    //---------------------------------------------------------------------------
    //将密码替换成需要的字符 1~128
    //注:	129~256 为ASCII扩展码,ASCII码并没有规定编号为128~255的字符,
    //		为了能表示更多字符,各厂商制定了很多种ASCII码的扩展规范。
    //		所以129~256不同的机器或不同的编辑框显示的字符都有可能不同
    //---------------------------------------------------------------------------
    
    #define SHOWCHAR_1		1 	//显示密码为	┌
    #define SHOWCHAR_2		2 	//显示密码为	┐
    #define SHOWCHAR_3		3 	//显示密码为	└
    #define SHOWCHAR_4		4 	//显示密码为	┘
    #define SHOWCHAR_5		5 	//显示密码为	│
    #define SHOWCHAR_6		6 	//显示密码为	-
    #define SHOWCHAR_7		7 	//显示密码为	·
    #define SHOWCHAR_8		8 	//显示密码为	◘
    #define SHOWCHAR_9		9 	//显示密码为	\t
    #define SHOWCHAR_10		10	//显示密码为	\n
    #define SHOWCHAR_11		11	//显示密码为	♂
    #define SHOWCHAR_12		12	//显示密码为	♀
    #define SHOWCHAR_13		13	//显示密码为	\r
    #define SHOWCHAR_14		14	//显示密码为	♬
    #define SHOWCHAR_15		15	//显示密码为	☼
    #define SHOWCHAR_16		16	//显示密码为	+
    #define SHOWCHAR_17		17	//显示密码为	◀
    #define SHOWCHAR_18		18	//显示密码为	↕
    #define SHOWCHAR_19		19	//显示密码为	
    #define SHOWCHAR_20		20	//显示密码为	¶
    #define SHOWCHAR_21		21	//显示密码为	┴
    #define SHOWCHAR_22		22	//显示密码为	┬
    #define SHOWCHAR_23		23	//显示密码为	┤
    #define SHOWCHAR_24		24	//显示密码为	↑
    #define SHOWCHAR_25		25	//显示密码为	├	
    #define SHOWCHAR_26		26	//显示密码为	→
    #define SHOWCHAR_27		27	//显示密码为	←
    #define SHOWCHAR_28		28	//显示密码为	向右游标
    #define SHOWCHAR_29		29	//显示密码为	向左游标
    #define SHOWCHAR_30		30	//显示密码为	向上游标
    #define SHOWCHAR_31		31	//显示密码为	向下游标
    #define SHOWCHAR_32		32	//显示密码为
    #define SHOWCHAR_33		33	//显示密码为	!
    #define SHOWCHAR_34		34	//显示密码为	"
    #define SHOWCHAR_35		35	//显示密码为	#
    #define SHOWCHAR_36		36	//显示密码为	$
    #define SHOWCHAR_37		37	//显示密码为	%
    #define SHOWCHAR_38		38	//显示密码为	&
    #define SHOWCHAR_39		39	//显示密码为	'
    #define SHOWCHAR_40		40	//显示密码为	(
    #define SHOWCHAR_41		41	//显示密码为	)
    #define SHOWCHAR_42		42	//显示密码为	*
    #define SHOWCHAR_43		43	//显示密码为	+
    #define SHOWCHAR_44		44	//显示密码为	,
    #define SHOWCHAR_45		45	//显示密码为	-
    #define SHOWCHAR_46		46	//显示密码为	.
    #define SHOWCHAR_47		47	//显示密码为	/
    #define SHOWCHAR_48		48	//显示密码为	0
    #define SHOWCHAR_49		49	//显示密码为	1
    #define SHOWCHAR_50		50	//显示密码为	2
    #define SHOWCHAR_51		51	//显示密码为	3
    #define SHOWCHAR_52		52	//显示密码为	4
    #define SHOWCHAR_53		53	//显示密码为	5
    #define SHOWCHAR_54		54	//显示密码为	6
    #define SHOWCHAR_55		55	//显示密码为	7
    #define SHOWCHAR_56		56	//显示密码为	8
    #define SHOWCHAR_57		57	//显示密码为	9
    #define SHOWCHAR_58		58	//显示密码为	:
    #define SHOWCHAR_59		59	//显示密码为	;
    #define SHOWCHAR_60		60	//显示密码为	<
    #define SHOWCHAR_61		61	//显示密码为	=
    #define SHOWCHAR_62		62	//显示密码为	>
    #define SHOWCHAR_63		63	//显示密码为	?
    #define SHOWCHAR_64		64	//显示密码为	@
    #define SHOWCHAR_65		65	//显示密码为	A
    #define SHOWCHAR_66		66	//显示密码为	B
    #define SHOWCHAR_67		67	//显示密码为	C
    #define SHOWCHAR_68		68	//显示密码为	D
    #define SHOWCHAR_69		69	//显示密码为	E
    #define SHOWCHAR_70		70	//显示密码为	F
    #define SHOWCHAR_71		71	//显示密码为	G
    #define SHOWCHAR_72		72	//显示密码为	H
    #define SHOWCHAR_73		73	//显示密码为	I
    #define SHOWCHAR_74		74	//显示密码为	J
    #define SHOWCHAR_75		75	//显示密码为	K
    #define SHOWCHAR_76		76	//显示密码为	L
    #define SHOWCHAR_77		77	//显示密码为	M
    #define SHOWCHAR_78		78	//显示密码为	N
    #define SHOWCHAR_79		79	//显示密码为	O
    #define SHOWCHAR_80		80	//显示密码为	P
    #define SHOWCHAR_81		81	//显示密码为	Q
    #define SHOWCHAR_82		82	//显示密码为	R
    #define SHOWCHAR_83		83	//显示密码为	S
    #define SHOWCHAR_84		84	//显示密码为	T
    #define SHOWCHAR_85		85	//显示密码为	U
    #define SHOWCHAR_86		86	//显示密码为	V
    #define SHOWCHAR_87		87	//显示密码为	W
    #define SHOWCHAR_88		88	//显示密码为	X
    #define SHOWCHAR_89		89	//显示密码为	Y
    #define SHOWCHAR_90		90	//显示密码为	Z
    #define SHOWCHAR_91		91	//显示密码为	[
    #define SHOWCHAR_92		92	//显示密码为	\ 
    #define SHOWCHAR_93		93	//显示密码为	]
    #define SHOWCHAR_94		94	//显示密码为	^
    #define SHOWCHAR_95		95	//显示密码为	_
    #define SHOWCHAR_96		96	//显示密码为	`
    #define SHOWCHAR_97		97	//显示密码为	a
    #define SHOWCHAR_98		98	//显示密码为	b
    #define SHOWCHAR_99		99	//显示密码为	c
    #define SHOWCHAR_100	100 //显示密码为	d
    #define SHOWCHAR_101	101 //显示密码为	e
    #define SHOWCHAR_102	102 //显示密码为	f
    #define SHOWCHAR_103	103 //显示密码为	g
    #define SHOWCHAR_104	104 //显示密码为	h
    #define SHOWCHAR_105	105 //显示密码为	i
    #define SHOWCHAR_106	106 //显示密码为	j
    #define SHOWCHAR_107	107 //显示密码为	k
    #define SHOWCHAR_108	108 //显示密码为	l
    #define SHOWCHAR_109	109 //显示密码为	m
    #define SHOWCHAR_110	110 //显示密码为	n
    #define SHOWCHAR_111	111 //显示密码为	o
    #define SHOWCHAR_112	112 //显示密码为	p
    #define SHOWCHAR_113	113 //显示密码为	q
    #define SHOWCHAR_114	114 //显示密码为	r
    #define SHOWCHAR_115	115 //显示密码为	s
    #define SHOWCHAR_116	116 //显示密码为	t
    #define SHOWCHAR_117	117 //显示密码为	u
    #define SHOWCHAR_118	118 //显示密码为	v
    #define SHOWCHAR_119	119 //显示密码为	w
    #define SHOWCHAR_120	120 //显示密码为	x
    #define SHOWCHAR_121	121 //显示密码为	y
    #define SHOWCHAR_122	122 //显示密码为	z
    #define SHOWCHAR_123	123 //显示密码为	{
    #define SHOWCHAR_124	124 //显示密码为	|
    #define SHOWCHAR_125	125 //显示密码为	}
    #define SHOWCHAR_126	126 //显示密码为	~
    #define SHOWCHAR_127	127 //显示密码为	   删除
    #define SHOWCHAR_128	128 //显示密码为	€
    
    //---------------------------------------------------------------------------
    // 主窗口的消息处理
    //---------------------------------------------------------------------------
    
    extern LRESULT CALLBACK DialogFunc(HWND,UINT,WPARAM,LPARAM);
    
    //---------------------------------------------------------------------------
    // 枚举所有窗口
    //---------------------------------------------------------------------------
    
    extern BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam);
    
    //---------------------------------------------------------------------------
    // 显示和隐藏密码的处理函数
    //---------------------------------------------------------------------------
    
    extern void ShowAll(HWND hwnd, int i);
    
    #endif


    main.cpp

    /**************************************************************************\
    *
    * 版权 (c) 2000 - 2100 雨绿凡尘。 保留所有权利。
    *
    * 模块名称:
    *
    *   main.cpp
    *
    * 摘    要:
    *	实现函数
    \**************************************************************************/
    
    #include "main.h"
    //---------------------------------------------------------------------------
    // 记录显示和隐藏密码的状态
    //---------------------------------------------------------------------------
    
    static bool g_bShowPassWord = false;
    
    //---------------------------------------------------------------------------
    // 程序入口函数
    //---------------------------------------------------------------------------
    
    int WINAPI WinMain (HINSTANCE hInstance,  HINSTANCE hPrevInstance, PSTR szCmdLine,  int iCmdShow)
    {
    	DialogBox (hInstance, (LPCSTR)IDD_DIALOG1, NULL, (DLGPROC)DialogFunc) ; 
    	return TRUE ;
    }
    
    //---------------------------------------------------------------------------
    // 主窗口的消息处理
    //---------------------------------------------------------------------------
    
    LRESULT CALLBACK DialogFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
    {
    	RECT rc;
    	switch(message)
    	{
    	case WM_INITDIALOG:
    		GetWindowRect(hwnd, &rc);
    		ShowWindow(hwnd, SW_SHOW);
    	case WM_SHOWWINDOW:	
    		return TRUE;
    	case WM_TIMER:
    		return TRUE;
    	case WM_COMMAND:
    		switch(LOWORD(wParam))
    		{
    		case IDSHOWPASS:
    			if (!g_bShowPassWord)
    			{
    				SetWindowText(hwnd,_T("隐藏密码"));
    				SetWindowText(GetDlgItem(hwnd,IDSHOWPASS),_T("隐藏密码"));
    			}
    			else
    			{
    				SetWindowText(hwnd,_T("隐藏密码"));
    				SetWindowText(GetDlgItem(hwnd,IDSHOWPASS),_T("显示密码"));
    			}
    			ShowAll(hwnd, 1);
    			return (FALSE);
    
    		case IDEXIT:
    			SendMessage(hwnd, WM_CLOSE, 0, 0);
    			return (TRUE);
    		}
    		break;
    	case WM_CLOSE:
    	case WM_DESTROY:
    		GetWindowRect(hwnd, &rc);
    		PostQuitMessage(0);
    		return FALSE;
    	}
    	return (FALSE);
    } 
    
    //---------------------------------------------------------------------------
    // 显示和隐藏密码的处理函数
    //---------------------------------------------------------------------------
    
    void ShowAll(HWND hwnd, int i)
    {
    	g_bShowPassWord = !g_bShowPassWord;
    	HWND Window_Handle;
    	Window_Handle = GetWindow(hwnd, GW_HWNDFIRST);
    	while (Window_Handle != 0)
    	{
    		if (Window_Handle != 0)
    			EnumChildWindows(Window_Handle, &EnumChildWindowsProc, i);
    		Window_Handle = GetWindow(Window_Handle, GW_HWNDNEXT);
    	}
    }
    
    
    //---------------------------------------------------------------------------
    // 枚举所有窗口
    //---------------------------------------------------------------------------
    
    BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam)
    {
    	char buffer[255];
    	GetClassName(hwnd, buffer, 256);
    	if (GetWindowLong(hwnd, GWL_STYLE | ES_PASSWORD))
    	{
    		if (g_bShowPassWord)
    		{
    			PostMessage(hwnd, EM_SETPASSWORDCHAR,SHOWCHAR_0, 0);
    		}
    		else
    		{
    			PostMessage(hwnd, EM_SETPASSWORDCHAR,SHOWCHAR_42, 0);
    		}
    	}
    
    	InvalidateRgn(hwnd, 0, TRUE);
    	return TRUE;                                         //终止循环
    }

    KEY.ICO


    预防查看

    BOOL CxxxDialog::PreTranslateMessage(MSG* pMsg)
    {
    	// TODO: 在此添加专用代码和/或调用基类
    	if (pMsg->message == EM_SETPASSWORDCHAR)
    	{
    		//一定要返回TRUE 否则无法预防
    		return TRUE;
    	}
    	return CDialog::PreTranslateMessage(pMsg);
    }



    展开全文
  • 之前在项目中次使用到editext中的这些属性,特别是在项目...1、edittext的密码显示与隐藏(这个功能其实简单的)1)、简单的布局&lt;LinearLayout android:layout_width="match_parent" android:...

    之前在项目中多次使用到editext中的这些属性,特别是在项目中的注册、登录、忘记密码的功能中.....,今天正好群中有个刚入门的群友再问,自己也来记录下,也希望对刚入门的朋友有些帮助。

    1、edittext的密码显示与隐藏(这个功能其实很简单的)

    1)、简单的布局

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <EditText
            android:id="@+id/et_read"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <ImageView
            android:id="@+id/iv_eyes"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:scaleType="centerInside"
            android:src="@mipmap/icon_eyes_close" />
    </LinearLayout>

    2)、edittext的简单代码

    这个功能时Edittext+ImageView完成的

    iv_eyes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isSure) {
                iv_eyes.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.icon_eyes_open));
                et_read.setSelection(et_read.getText().toString().length());
                et_read.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                isSure = !isSure;
            } else {
                iv_eyes.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.icon_eyes_close));
                setEditTextPassWordShowStyle(et_read);
                et_read.setSelection(et_read.getText().toString().length());
                isSure = !isSure;
            }
        }
    });
    

    2、Edittext密码圆点格式替换成星号*的形式

    使EditeText密码的圆点形式换成星号*的简单代码:

    public void setEditTextPassWordShowStyle(EditText et) {
        et.setTransformationMethod(new PasswordCharSequenceStyle());
    }
    
    public class PasswordCharSequenceStyle 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;
            }
    
            public char charAt(int index) {
                return '*';
            }
    
            public int length() {
                return mSource.length();
            }
    
            public CharSequence subSequence(int start, int end) {
                return mSource.subSequence(start, end);
            }
        }
    }

    3、Edittext的TextWatcher的属性

    这个属性适合edittext需要在它输入中的做监听的功能,例如:在edittext输入中监听输入的长度、输入内容时显示删除图标,输入完成时隐藏删除图标。例子如下

    简单的布局如下:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <EditText
            android:id="@+id/et_write"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:drawablePadding="-30dp"
            android:inputType="text"
            android:text="" />
    
        <ImageView
            android:id="@+id/iv_del"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="-50dp"
            android:scaleType="centerInside"
            android:src="@mipmap/ic_search_delete"
            android:visibility="gone" />
    </LinearLayout>

    简单的代码:

    et_wirite.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            iv_del.setVisibility(View.GONE);
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            iv_del.setVisibility(View.VISIBLE);
        }
    
        @Override
        public void afterTextChanged(Editable s) {
            iv_del.setVisibility(View.VISIBLE);
        }
    });
    
    iv_del.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            et_wirite.setText("");
            iv_del.setVisibility(View.GONE);
        }
    });

    以上就是这些简单的功能。

    简单的demo,已经验证无误:https://download.csdn.net/download/smxueer/10411816





    展开全文
  • MySQL隐藏真实手机号

    2019-04-22 08:32:54
    在写项目的时候,很多涉及用户隐私的内容都会用号占位,例如 京东商品详情评论功能(用户昵称使用号占位,避免泄露用户信息) 抽奖活动中奖名单(用户手机号使用号占位,避免泄露用户信息) ...

    1、明确需求

     

    在写项目的时候,很多涉及用户隐私的内容都会用星号占位,例如

    • 京东商品详情评论功能(用户昵称使用星号占位,避免泄露用户信息)

       

     

    • 抽奖活动中奖名单(用户手机号使用星号占位,避免泄露用户信息)

     

     

    • 思考:如何实现上图效果?

    • 回答:通过mysql的concat、left、right系统函数

     

    2、语法说明

    作用:将多个字符串连接成一个字符串

    语法:concat(字符串1,....,字符串n)

     

    作用:从左边开始截取字符串

    语法:left(字符串,截取长度)

     

    作用:从右边开始截取字符串

    语法:right(字符串,截取长度)

     

    3、分析步骤

    这里我们主要通过mysql的concat、left、right函数来过滤数据库数据。我们以隐藏手机号码为例,实现过程非常简单,一共只需要3个步骤:

    ① 通过left函数截取手机号前3个字符
    ② 通过right函数截取手机号后3个字符
    ③ 通过concat将“前3个字符” + “*****” + 后3个字符连接起来即可

    接下来,我们老师将带领大家通过以上3个步骤来实现接口代码优化....

     

    4、推进代码

    步骤1:准备测试数据

    CREATE TABLE users (
          id int primary key auto_increment comment '编号',
          uname varchar(45) not null comment '姓名',
          mobile char(11) not null comment '手机号'
    ) CHARSET=utf8;

    insert into users
    values
    (null, '张三', 12222222222),
    (null, '李四', 13333333333),
    (null, '王五', 14444444444),
    (null, '赵六', 15555555555);

     

    步骤2:按照分析步骤实现功能

     

     

    -- 显示所有字段 + 并单独显示手机字段别名fmt_mobile
    -- select *,mobile as fmt_mobile from users;

    -- 显示所有字段 + 并单独显示手机字段“左边3个字符”
    -- select *,left(mobile,3) as fmt_mobile from users;

    -- 显示所有字段 + 并单独显示手机字段”右边3个字符”
    -- select *,right(mobile,3) as fmt_mobile from users;

    -- 显示所有字段 + 并单独显示手机字段”左边3个字符”+"*****"+”右边3个字符”
    select *,concat(left(mobile,3), '*****', right(mobile,3)) as fmt_mobile from users; 

     

     

    展开全文
  • 介绍如何利用 MySQL 字符串函数用户姓名、手机号、身份证号以及银行卡号等的部分内容显示为号(*),从而实现信息的隐藏,保护信息安全。
  • QQ原来隐藏着这么秘密

    千次阅读 2007-11-11 21:23:00
    一、您的QQ的在线状态发布在互联网上 您的QQ的在线状态发布在互联网上,不用加好友也可以聊天. 您的QQ/TM的在线状态发布在互联网上;... http://is.qq.com/webpresence/ 最下面就是俺的QQ互动状态显示,怎么样
  • AI中的隐藏工具

    2019-06-18 10:19:38
    AI中有很多方便我们作图的小工具,AI中的工具就只是左边工具栏中那几个工具?那可就想错了!其实AI中还有一些隐藏的工具,不知道你懂不懂的使用嘞。 我在这 举一个例子,就拿最左边ESC下面的那个小波浪线来说吧!我...
  • MySQL 查询手机号时隐藏中间 4 位

    千次阅读 2017-11-28 17:02:01
    很多时候我们会根据昵称显示某某用户,但如果用户未设置昵称时就需要用用户名代替,但用户名又是手机号的时候,隐私问题就来了,所以下面是一个简单的方法在查询时自动 Get 到隐藏后的手机号。 很简单,对需要屏蔽的...
  • Qt自定义密码框,先显示后隐藏

    千次阅读 多人点赞 2016-03-25 11:31:00
    现在很多应用在密码输入时,会先显示一段时间,大概几百毫秒,然后再变成号或者圆点隐藏起来。这样做的好处是,可以让密码输入者看到自己输入的字符,同时又防止密码被偷窥。但是Qt自带的密码输入框,要么输入时...
  • 在工作中,我们有时需要文章列表内容出的隐藏并显示省略号,网上大多是用css实现,但不兼容,在这里教大家用jq实现溢出隐藏显示省略号。 原理简单。就是控制盒子里的内容。 div class="box">东风夜放花千树,...
  • 多行注释快捷键"ctrl+shift+/" ,因为使用多行注释后出现很多号占位列,就算注释解开也无法恢复到原来的位置,所以用下面这个方法去掉多余的号,只在开头结尾加上。 Window->Java->Code Style->Formatter ...
  • QQ技术攻略-原来隐藏着这么秘密

    千次阅读 2005-10-07 14:55:00
    一、您的QQ的在线状态发布在互联网上 您的QQ的在线状态发布在互联网上,不用加好友也可以聊天...."互动状态",你也能随心设置...http://is.qq.com/webpresence/最下面就是俺的QQ互动状态显示,怎么样的说? 
  • 目录 第一章、简介 第二章、控件隐藏/显示 2.1、XAML实现隐藏/显示 ...本博客介绍WPF中Visibility属性应用的两个问题。 第一个问题是控件的隐藏/显示问题,如下代码所示:<Button Width="...
  • Android-密码的明文显示与隐藏

    千次阅读 2014-07-25 20:19:05
    经常看到在很多登陆或者需要输入密码的界面
  • 很多情况下,不得不调用cmd命令行,去实现一系列功能,总结靠谱方法两种如下: 方法一:可接受cmd命令行黑框一闪(推荐数::可传值几乎任何cmd命令) string string getCmdResult(const string &amp;...
  • Linux隐藏帐户

    千次阅读 2008-12-03 15:54:00
    Linux系统后门技术(隐藏帐户篇) 每当我们欢天喜地的得到一个linux系统的服务器肉鸡时,最大的愿望就是能把它永远留住。当然,永远留住是不可能的,但是我们要尽量的不让它飞走。这就要用到linux的后门技术了,这...
  • 隐藏内容+触发指示

    2012-06-19 22:12:59
    通过合理的指示元素引导用户发现隐藏内容 标签(Tab)、下拉菜单、手风琴风格的折叠控件...渐进呈现(progressive ...因此,把界面元素隐藏起来还不算完,我们必须通过一些恰当的方式向用户进行提示,让他们
  • 来源:http://blog.yesky.com/ QQ技术全攻略(原来简单的QQ,还隐藏着这么秘密!)1、您的QQ的在线状态发布在互联网上将您的QQ的在线状态发布在互联网上,不用加好友也可以聊天.您的QQ/TM的在线状态发布在...
  • 一个拼图游戏,包含很多内容。

    千次阅读 2012-01-30 17:30:15
    如果您对Silverlight的编程模型感到适应,且已经开始利用Visual Studio和Microsoft Expression套件进行工作,那么您可以考虑略过本实验。从另一方面讲,如果您完全对Silverlight不了解,我们强烈建议您查阅一些与...
  • 很多地方为了隐藏用户名信息,用*号代替。 可以封装成方法直接处理。 function hideStar($str) { //用户名、邮箱、手机账号中间字符串以*隐藏 if (strpos($str, '@')) { $email_array = explode("@&...
  • 水经注万能地图下载器对很多朋友来说并不陌生,大家知道在上面可以下载三十多款地图,而且下载的地图可以进行包括大图、瓦片在内的各种格式的数据导出;可以在上面对矢量和影像进行坐标的转换;同时可以在地图上进行...
  • 神经网络与信息隐藏的结合

    千次阅读 2020-03-25 09:52:16
    神经网络与信息隐藏的结合 Contents 1 引言... 1 2 切入点介绍... 1 2.1 SGAN & SSGAN.. 1 2.2 使用神经网络生成隐写失真代价... 1 2.3 使用神经网络做隐写分析... 1 2.4 生成含秘载体... 2 3 面临的...
  • 1、Object-C有继承吗?没有的话用什么代替?cocoa 中所有的类都是NSObject 的子类 继承在这里是用protocol 委托代理 来实现的 你不用去考虑繁琐的继承 ,虚基类的概念. ood的多态特性 在 obj-c ...
  • Linux系统后门技术(隐藏帐户篇)

    万次阅读 2014-05-15 18:04:33
    Linux系统后门技术(隐藏帐户篇)    每当我们欢天喜地的得到一个linux系统的服务器肉鸡时,最大的愿望就是能把它永远留住。当然,永远留住是不可能的,但是我们要尽量的不让它飞走。这就要用到linux的后门...
  • 利用UGUI实现 显示/隐藏密码 功能

    千次阅读 2015-12-15 21:14:20
    所用组件:Toggle InputField 思路:利用Toggle制作 显示/隐藏...制作起来简单 using UnityEngine; using System.Collections; using UnityEngine.UI; public class NewBehaviourScript : MonoBehaviour { pub
  • 门牌号码 - 他们隐藏的意义 作为一个命理我已经被问过无数次的朋友,同学,客户,听众给我的广播中出现,并通过这些从一个居住地移动到另一个他们的门牌号码的意思。搬家可以是一个非常痛苦的经历,或者一个解放的...
  • 键盘 - 隐藏收起键盘的N种方法

    千次阅读 2016-03-18 17:51:15
    TextField & TextView 收起键盘的方法有很多,但总的来说就是释放第一响应者和结束编辑即可。
  • 隐藏在《王者荣耀》中程序24种设计模式

    千次阅读 多人点赞 2018-07-01 11:08:33
    当你还是一个码农的时候,每天都要编写多少行代码每次都要创建很多类的时候,每建立一次给你一点经验值,累计到十级的时候会发现我写了这很多代码为什么不能复用呢? 这时恭喜您进入转职阶段,由码农转成会放魔法的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,766
精华内容 9,906
关键字:

怎样将很多的行进行隐藏