在前端中我们知道用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;@Overrideprotected 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);}@Overridepublic 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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/white"android:orientation="horizontal" ><EditTextandroid: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"/><buttonandroid: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()。

onStart()

onCreate() 退出后,Activity 将进入“已启动”状态,并对用户可见。此回调包含 Activity 进入前台与用户进行互动之前的最后准备工作。

onResume()

系统会在 Activity 开始与用户互动之前调用此回调。此时,该 Activity 位于 Activity 堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在 onResume() 方法中实现的。

onResume() 回调后面总是跟着 onPause() 回调

onPause()

当 Activity 失去焦点并进入“已暂停”状态时,系统就会调用 onPause()。例如,当用户点按“返回”或“最近使用的应用”按钮时,就会出现此状态。当系统为您的 Activity 调用 onPause() 时,从技术上来说,这意味着您的 Activity 仍然部分可见,但大多数情况下,这表明用户正在离开该 Activity,该 Activity 很快将进入“已停止”或“已恢复”状态。

如果用户希望界面继续更新,则处于“已暂停”状态的 Activity 也可以继续更新界面。例如,显示导航地图屏幕或播放媒体播放器的 Activity 就属于此类 Activity。即使此类 Activity 失去了焦点,用户仍希望其界面继续更新。
您不应使用 onPause() 来保存应用或用户数据、进行网络呼叫或执行数据库事务。有关保存数据的信息,请参阅保存和恢复 Activity 状态。

onPause() 执行完毕后,下一个回调为 onStop()或 onResume(),具体取决于 Activity 进入“已暂停”状态后发生的情况。

onStop()

当 Activity 对用户不再可见时,系统会调用 onStop()。出现这种情况的原因可能是 Activity 被销毁,新的 Activity 启动,或者现有的 Activity 正在进入“已恢复”状态并覆盖了已停止的 Activity。在所有这些情况下,停止的 Activity 都将完全不再可见。

系统调用的下一个回调将是 onRestart()(如果 Activity 重新与用户互动)或者 onDestroy()(如果 Activity 彻底终止)。

onRestart()

当处于“已停止”状态的 Activity 即将重启时,系统就会调用此回调。onRestart() 会从 Activity 停止时的状态恢复 Activity。
此回调后面总是跟着 onStart()。

onDestroy()

系统会在销毁 Activity 之前调用此回调。
此回调是 Activity 接收的最后一个回调。通常,实现 onDestroy() 是为了确保在销毁 Activity 或包含该 Activity 的进程时释放该 Activity 的所有资源。
本部分只是简要地介绍了该主题。有关 Activity 生命周期及其回调的详细说明,请参阅 Activity 生命周期。







觉得有用的可以给个三连,关注一波!!!带你了解更多的Android小项目

Android 眼睛 显示隐藏密码(ImageView)相关推荐

  1. input如何显示密码隐藏密码,点击小眼睛显示隐藏密码

    目录 一.如何单纯的在密码框显示密码 二.如何在密码框里面显示并可以隐藏密码 三.代码展示 四.结果展示   一.如何单纯的在密码框显示密码 单纯显示密码可以吧type里面的值改成text,如果要隐藏 ...

  2. js点击小眼睛显示隐藏密码框的密码

    该按钮类似于登录页面后面的小眼睛 点击显示密码 再点击密码变星号 核心思路:把密码框类型改为文本框即可看见里面的密码 利用flag变量 判断flag的值 如果是1就切换文本框 flag设置为0 如果是 ...

  3. uni-app 点击小眼睛显示/隐藏密码

    <template><view><form><view class="cu-form-group margin-lg "><i ...

  4. 仿京东显示隐藏密码明文案例(字体图标实现)

    仿京东显示隐藏密码明文案例(字体图标实现) 眼睛使用的是 iconfont 阿里矢量图标库的内容 链接:https://www.iconfont.cn/search/index?代码案例展示: 字体图 ...

  5. js操作元素:改变元素内容有两种方式: interText 和 innerHTML的区别, 常用的元素的属性操作, 仿电脑系统时间问好 ,表单元素的属性操作 ,案例:仿京东显示隐藏密码 ,样式属性操作

    文章目录 操作元素 改变元素内容有两种方式: interText 和 innerHTML的区别 常用的元素的属性操作 案例:仿电脑系统时间问好 表单元素的属性操作 案例:仿京东显示隐藏密码 样式属性操 ...

  6. EditText显示隐藏密码

    EditText显示(隐藏)密码 两种方式 第一种: TextInputLayout设置passwordToggleEnabled属性 <android.support.design.widge ...

  7. Android TextInputEditText初始隐藏密码

    Android TextInputEditText初始隐藏密码 出现问题 在使用TextInputEditText时候 在TextInputLayout 当中设置了关于密码可见和不可见的设定 以下为代 ...

  8. 案例 : JS实现显示隐藏密码框

    在实现本案例时,要清楚什么时显示隐藏密码框.在我们点击某个图标时,密码框中不可见的密码变为可见的数字,字母和符号的组合. 主要算法: 设置一个flag变量,当flag = 0 时,显示密码(passw ...

  9. 前端案例——1.仿京东显示隐藏密码明文案例。

    <!-- 仿京东显示隐藏密码明文案例 --> <!-- 核心思路:点击眼睛按钮,把密码框改为文本框就可以看见里面的密码. --> <!-- 一个按钮两个状态,点击一次,切 ...

  10. JSP显示/隐藏密码

    显示/隐藏密码 点击开/闭眼的图片,即可显示/隐藏密码,代码如下: <!DOCTYPE html> <html lang="en"> <head> ...

最新文章

  1. 【组合数学】非降路径问题 ( 非降路径问题概要说明 | 非降路径问题基本模型 | 非降路径问题拓展模型 1 非原点起点 | 非降路径问题拓展模型 2 有途经点 )
  2. Codeforces Round #493 (Div. 2) C. Convert to Ones 乱搞_构造_好题
  3. php如何转类型,PHP数据类型转换
  4. 阿里可观测性数据引擎的技术实践
  5. 16款测序平台性能大PK,华大表现不俗!基于人类和细菌基因组DNA水平的多平台测序数据研究成果发布...
  6. Worktile 移动团队如何使用 C++ 完成 Worktile Pro 跨平台应用开发2
  7. HashMap 精讲原理篇
  8. 机器人技术与人工智能有什么区别?
  9. L1- 001——008
  10. 云计算5G的基本概念
  11. 解决:应用程序无法启动,因为应用程序的并行配置不正确
  12. 树莓派开机自动运行_树莓派程序开机自启动方法总结
  13. 触摸芯片的四种多点触摸技术
  14. html是编程语言表情包,语言编程表情包 - 语言编程微信表情包 - 语言编程QQ表情包 - 发表情 fabiaoqing.com...
  15. 怎样找计算机物理地址,怎么查询电脑物理地址
  16. word文档封面免费下载_为Word 2007文档添加封面
  17. 项目 - Web地图开发【高德地图API】(一)
  18. 在线预览pdf(不可下载)
  19. P3374 【模板】树状数组 1( 单点修改 + 区间查询 )
  20. bibtex 共生_游戏与音乐的共生

热门文章

  1. java中floor和ceil_floor() 和 ceil()函数
  2. jdk重复安装,Error:Registry key ‘Software\JavaSoft\Java Runtime Environment\CurrentVersion(已解决)
  3. 前端微信签名验证工具_微信网页开发如何完成签名校验
  4. 短视频技术指南:国内最牛5家短视频解决方案提供商评测
  5. 女生学大数据好还是计算机好?都适合女生吗?就业前景好吗?
  6. R语言【箱线图和茎叶图】
  7. 图论-生成树-黑暗城堡
  8. 量化基金投资之套利策略简介
  9. c语言的字符型都有什么作用是什么,字符型数据是什么意思怎么理解
  10. 贪吃蛇小游戏(C语言实现简易版)