android studio 触摸锁,学习AndroidStudio布局,并编写一个图案解锁demo
目的:
1.基本布局的了解
2.各种布局方法的了解和练习
3.利用xml进行开发
开发思维:
添加控件 9个点 图⽚ 20条线 图片
ImageView显示图片 容器来管理子控件: FrameLayout LinearLayout RelativeLayout ConstraintsLayout
手触摸事件 点亮:取消隐藏
记录密码
具体实施:
获取容器视图:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView dot =new ImageView(this);
dot.setBackgroundResource(R.drawable.selected_dot);
//创建这个控件对应的坐标位置 LayoutParams
ConstraintLayout.LayoutParams params =new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
//获取背景图片的x,y
ImageView bgImageView = findViewById(R.id.op_view);
int x = (int)bgImageView.getX();
int y = (int)bgImageView.getY();
params.leftMargin =50;
params.topMargin =50;
}
添加控件 9个点 图⽚ 20条线 图片
ImageView显示图片 容器来管理子控件:
public void onWindowFocusChanged(boolean hasFocus) {
//判断是否已经显示
if (hasFocus) {
//获取容器
RelativeLayout rl = findViewById(R.id.root_layout);
//获取背景视图
ImageView iv = findViewById(R.id.op_view);
float scale = getResources().getDisplayMetrics().density;
//获取 x 和 y坐标
int x = iv.getLeft();
int y = iv.getTop();
创建横线6条
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
//创建一个视图用于显示线
ImageView lineView = new ImageView(this);
//设置图片
lineView.setBackgroundResource(R.drawable.normal_highlight1);
//创建布局参数
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int)(x + 46.6*scale) +(int)(99*scale*i);
params.topMargin = (int)(y + 170*scale)+(int)(99*scale*j);
rl.addView(lineView, params);
}
}
创建竖线6条
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
//创建一个视图用于显示线
ImageView lineView = new ImageView(this);
//设置图片
lineView.setBackgroundResource(R.drawable.normal_highlight2);
//创建布局参数
RelativeLayout.LayoutParams params
= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int)(x + 42*scale) +(int)(99*scale*j);
params.topMargin = (int)(y + 170*scale)+(int)(99*scale*i);
rl.addView(lineView, params);
}
}
创建斜线
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
//创建一个视图用于显示线
ImageView lineView = new ImageView(this);
//设置图片
lineView.setBackgroundResource(R.drawable.normal_highlight3);
//创建布局参数
RelativeLayout.LayoutParams params
= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int)(x + 42*scale) +(int)(99*scale*i);
params.topMargin = (int)(y + 170*scale)+(int)(99*scale*j);
rl.addView(lineView, params);
ImageView lLineView = new ImageView(this);
lLineView.setBackgroundResource(R.drawable.normal_highlight4);
params.leftMargin = (int)(x + 53.3*scale) +(int)(99*scale*i);
params.topMargin = (int)(y + 170*scale)+(int)(99*scale*j);
rl.addView(lLineView,params);
}
}
创建用于显示点的视图
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
//创建用于显示点的视图
ImageView dotView = new ImageView(this);
//隐藏视图
dotView.setVisibility(View.VISIBLE);
dotView.setBackgroundResource(R.drawable.selected_dot);
//创建控件的尺寸
RelativeLayout.LayoutParams params
= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int)(x + 35*scale) +(int)(99*scale*i);
params.topMargin = (int)(y + 162*scale)+(int)(99*scale*j);
//将子控件添加到容器中
rl.addView(dotView, params);
}
}
}
}
还有手触摸事件,记录密码。
小结:
东西很多,各种布局了解下来,就感觉大脑快装满了。尤其是算位置的时候很是焦灼(泪奔),强行理解(勉强过关)。在弄完一组控件添加之后,后面的控件添加就简单了,以为思路清晰了,就快。很期待,将完整的demo写出来。
android studio 触摸锁,学习AndroidStudio布局,并编写一个图案解锁demo相关推荐
- android获取其他app布局,Android Studio查看其它APP的布局结构
概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...
- Android Studio 工具窗口浮动与布局恢复【申明:来源于网络】
Android Studio 工具窗口浮动与布局恢复[申明:来源于网络] http://bbs.chinaunix.net/thread-4182438-1-1.html 转载于:https://ww ...
- Android Studio下载搭建学习笔记01
Android Studio下载搭建学习笔记01 下载Android Studio 安装Android Studio 进入安装向导 选择安装组件 选择安装位置 选择文件菜单 等待安装 启动并配置And ...
- android listview 删除出错,Android Studio,删除ListView项目而不影响另一个项目
我正在做一个ToDo List并且在从ListView中删除一个项目时遇到麻烦.Android Studio,删除ListView项目而不影响另一个项目 如果用户已经做到了名单上的一件事,他可以点击该 ...
- Android studio三周学习总结
因为疫情我们在线上已经进行了三个周的网课学习, 这半个月一直在学习Android方面的知识,对Android开发有了一个基本的认识,学会了Android studio的基本操作.刚开始接触Androi ...
- android studio val,Kotlin学习笔记之const val与val
const的使用 const 必须修饰val const 只允许在top-level级别和object中声明,使用方式如下: const val THOUSAND = 1000 object myOb ...
- Android Studio xml文件中的布局预览视图
操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...
- android studio 新建工程慢,关于AndroidStudio新建与编译项目速度慢解决办法
android第一次新建项目是,相关依赖包需要下载很久,至少半小时,因为网速问题,还会多次下载失败. 解决办法如下: 1.通过镜像将gradle-5.4.1-all.zip下载到本地:解压到文件夹:D ...
- android studio自定义类,为AndroidStudio设置自定义类注释
我们在使用eclipse的时候,只要在类上面输入/**再按enter,就会出现类注释. package com.demo; /** * * @author chenjunxu * */ public ...
最新文章
- jyphon 环境变量配置
- apache kafka_使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务...
- esp32 怎么分配freertos 堆栈大小_深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化...
- 在 Delphi 下使用 DirectSound (14): 测试镶边效果器 IDirectSoundFXFlanger8
- IDEA远程连接mysq数据库
- WORD如何缩小编号与文本之间的距离?
- 使用maven启动web项目报错
- 阿里云docker提交及删除入门操作
- 自主创业一年,自己总结了5个创业心得
- 论文参考文献一定要在文中标注吗?
- MacOS程序和库签名的问题
- 用java写新年快乐特效代码_蓝叶分享新年快乐大红灯笼特效代码
- 浅谈,如何获取MTK CPU信息 请看我是如何做的。一步步来吧
- Hibernate占位符?和:及JPA占位符
- 基于WPS开放平台 WPS文件转PDF开发指南
- android 12去掉屏幕锁屏(屏幕默认锁屏方式改成无)
- tar 命令打包压缩tar.gz,不包含当前文件夹路径
- android蓝牙实验,Experiment6蓝牙Android开发实验指导书.doc
- linux服务生产环境启动报错
- 返回一个整数的反序数函数