Android 眼睛 显示隐藏密码(ImageView)_hidereturnstransformationmethod

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

在这里插入图片描述

在前端中我们知道用javascript就可以可以很容易实现,那么在Android中怎么实现这个功能呢?
Java代码:

package com.example.test2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private EditText password;
    private ImageView imageView;
    private boolean flag=true;
    private HideReturnsTransformationMethod method_show;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        password = findViewById(R.id.password);
        imageView = findViewById(R.id.img);
        imageView.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.img:
                changeImage();

        }
    }

    private void changeImage() {
        // todo 每次进入登陆时输入的密码都是隐藏的
        PasswordTransformationMethod methodHide=PasswordTransformationMethod.getInstance();
        password.setTransformationMethod(methodHide);

        if(flag){
            imageView.setImageDrawable(this.getResources().getDrawable(R.drawable.eye1));
            flag=false;
            // todo 隐藏密码
            PasswordTransformationMethod method_hide = PasswordTransformationMethod.getInstance();
            password.setTransformationMethod(method_hide);
        }
        else{
            imageView.setImageDrawable(this.getResources().getDrawable(R.drawable.eye2));
            flag=true;
            // todo 显示密码
            method_show= HideReturnsTransformationMethod.getInstance();
            password.setTransformationMethod(method_show);

        }

        if (!password.getText().toString().trim().equals("")) {
            password.setSelection(password.getText().toString().trim().length());//将光标移至文字末尾
        }

    }
}

布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout\_height="match\_parent"
 android:layout\_width="match\_parent"
 xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
 android:layout\_width="match\_parent"
 android:layout\_height="50dp"
 android:background="@color/white"
 android:orientation="horizontal" >
        <EditText
 android:id="@+id/password"
 android:layout\_width="0dp"
 android:layout\_weight="1"
 android:layout\_height="match\_parent"
 android:layout\_gravity="center\_vertical"
 android:layout\_marginLeft="10dp"
 android:inputType="textPassword"
 android:hint="请设置登录密码"
 android:background="@null"/>

        <button
 android:id="@+id/btn"
 android:layout\_width="89dp"
 android:layout\_height="match\_parent"
 android:background="@drawable/eye2"/>
        

    </LinearLayout>


</LinearLayout>

睁眼闭眼资源
在这里插入图片描述

在这里插入图片描述
可以伴随一生的编程软件(完全免费)。里面除了全国top的刷题题库,还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验,从学校到社会工作,时时刻刻你都可以用到,感兴趣的可以去注册试试可以伴随程序员一生的app

Activity 类是 Android 应用的关键组件,而 Activity 的启动和组合方式则是该平台应用模型的基本组成部分。在编程范式中,应用是通过 main() 方法启动的,而 Android 系统与此不同,它会调用与其生命周期特定阶段相对应的特定回调方法来启动 Activity 实例中的代码。
本文介绍了 Activity 的概念,并提供了有关如何使用 Activity 的简要说明。要详细了解有关设计应用架构的最佳做法,请参阅应用架构指南。
Activity 的概念
移动应用体验与桌面体验的不同之处在于,用户与应用的互动并不总是在同一位置开始,而是经常以不确定的方式开始。例如,如果您从主屏幕打开电子邮件应用,可能会看到电子邮件列表,如果您通过社交媒体应用启动电子邮件应用,则可能会直接进入电子邮件应用的邮件撰写界面。
Activity 类的目的就是促进这种范式的实现。当一个应用调用另一个应用时,调用方应用会调用另一个应用中的 Activity,而不是整个应用。通过这种方式,Activity 充当了应用与用户互动的入口点。您可以将 Activity 实现为 Activity 类的子类。
Activity 提供窗口供应用在其中绘制界面。此窗口通常会填满屏幕,但也可能比屏幕小,并浮动在其他窗口上面。通常,一个 Activity 实现应用中的一个屏幕。例如,应用中的一个 Activity 实现“偏好设置”屏幕,而另一个 Activity 实现“选择照片”屏幕。
大多数应用包含多个屏幕,这意味着它们包含多个 Activity。通常,应用中的一个 Activity 会被指定为主 Activity,这是用户启动应用时出现的第一个屏幕。然后,每个 Activity 可以启动另一个 Activity,以执行不同的操作。例如,一个简单的电子邮件应用中的主 Activity 可能会提供显示电子邮件收件箱的屏幕。主 Activity 可能会从该屏幕启动其他 Activity,以提供执行写邮件和打开邮件这类任务的屏幕。
虽然应用中的各个 Activity 协同工作形成统一的用户体验,但每个 Activity 与其他 Activity 之间只存在松散的关联,应用内不同 Activity 之间的依赖关系通常很小。事实上,Activity 经常会启动属于其他应用的 Activity。例如,浏览器应用可能会启动社交媒体应用的“分享”Activity。
要在应用中使用 Activity,您必须在应用的清单中注册关于 Activity 的信息,并且必须适当地管理 Activity 的生命周期。本文的后续内容将介绍这些主题。
配置清单
要使应用能够使用 Activity,您必须在清单中声明 Activity 及其特定属性。
声明 Activity
要声明 Activity,请打开清单文件,并添加 元素作为 元素的子元素。例如:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >

此元素唯一的必要属性是 android:name,该属性用于指定 Activity 的类名称。您也可以添加用于定义标签、图标或界面主题等 Activity 特征的属性。如需详细了解上述及其他属性,请参阅 元素参考文档。
注意:发布应用后,就不应再更改 Activity 名称,否则可能会破坏某些功能,例如应用快捷方式。如需详细了解发布后应避免的更改,请参阅不可更改的内容。
声明 intent 过滤器
Intent 过滤器是 Android 平台的一项非常强大的功能。借助这项功能,您不但可以根据显式请求启动 Activity,还可以根据隐式请求启动 Activity。例如,显式请求可能会告诉系统“在 Gmail 应用中启动‘发送电子邮件’Activity”,而隐式请求可能会告诉系统“在任何能够完成此工作的 Activity 中启动‘发送电子邮件’屏幕”。当系统界面询问用户使用哪个应用来执行任务时,这就是 intent 过滤器在起作用。
要使用此功能,您需要在 元素中声明 属性。此元素的定义包括 元素,以及可选的 元素和/或 元素。这些元素组合在一起,可以指定 Activity 能够响应的 intent 类型。例如,以下代码段展示了如何配置一个发送文本数据并接收其他 Activity 的文本数据发送请求的 Activity:

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>

管理 Activity 生命周期 一个 Activity 在其生命周期中会经历多种状态。您可以使用一系列回调来处理状态之间的转换。下面几节将介绍这些回调。

onCreate()

您必须实现此回调,它会在系统创建您的 Activity 时触发。您的实现应该初始化 Activity 的基本组件:例如,您的应用应该在此处创建视图并将数据绑定到列表。最重要的是,您必须在此处调用 setContentView() 来定义 Activity 界面的布局。
onCreate() 完成后,下一个回调将是 onStart()。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-319BCjGg-1713272170389)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用一个 ImageView 来控制 EditText 显示隐藏密码。在点击 ImageView 时,切换 EditText 的输入类型即可。 首先,在布局文件中添加一个 ImageView 和一个 EditText,例如: ``` <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/password_edittext" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="Password" android:inputType="textPassword"/> <ImageView android:id="@+id/show_password_imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_show_password"/> </LinearLayout> ``` 然后,在代码中获取 ImageView 和 EditText,并在 ImageView 的点击事件中切换 EditText 的输入类型: ``` ImageView showPasswordImageView = findViewById(R.id.show_password_imageview); EditText passwordEditText = findViewById(R.id.password_edittext); showPasswordImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int inputType = passwordEditText.getInputType(); if (inputType == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) { passwordEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); showPasswordImageView.setImageResource(R.drawable.ic_show_password); } else { passwordEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); showPasswordImageView.setImageResource(R.drawable.ic_hide_password); } // move cursor to the end of the text passwordEditText.setSelection(passwordEditText.getText().length()); } }); ``` 这里需要注意的是,当切换输入类型时,EditText 中的光标位置会丢失,所以需要在切换后将光标移动到文本末尾。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值