学习目的

学习新的Android开发相关知识,并通过代码实现图案解锁功能

相关技术、及其使用

注意:在界面上添加控件都需要给控件指定其在界面上所处的位置 及 X ,Y ,W ,H

1、LinerLayout里面相关方法:

Margin : 控件边缘和其他控件的间距 外间距

padding :控件内部和自己边缘的间距 内间距

layout_marginTop:上边距

layout_marginStart和layout_marginLeft :左边距

layout_marginEnd 和 layout_marginRight : 右边距

2、RelativeLayout里面的相关方法:

layout_alignRight = "@id/v1" : 右边对齐

layout_alignLeft = "@id/v1" 左边对齐

layout_alignTop = "@id/v1" 上边对齐

layout_alignEnd = "@id/v1" 下边对齐

在MarginLayout的基础上添加了对齐

android:layout_marginHorizontal="100dp"对齐并居中

注意:RelativeLayout里面必须给每个控件相应的 x , y , w ,h

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/main_bg"

android:scaleType="fitXY"

/>

3、约束布局(ConstraintLayout)

需要注意:宽高比例的方法 app:layout_constraintDimensionRatio="w,1:2" 宽高比 “h,1:2”高宽比

约束布局面给界面添加边距

android:layout_width="0dp"

android:layout_height="0dp"

android:background="@color/colorAccent"

android:layout_constraintStart_toStartOf="parent"

android:layout_constraintTop_toToptOf="parent"

android:layout_constraintEnd_toEndOf="parent"

android:layout_constraintBottom_toBottomOf="parent"/>

4、图案解锁开发

(1)在RelativeLayout容器里面添加图案解锁的背景

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/main_bg"

android:scaleType="fitXY"

/>

(2)在添加就有9个点的背景图片

android:id="@+id/opView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/op_bg"

android:layout_centerInParent="true"/>

(3)通过Java代码对界面进一步布局和功能实现:

1.实现onWindowFocusChanged方法来监听窗口

@Override

public void onWindowFocusChanged(boolean hasFocus) {

super.onWindowFocusChanged(hasFocus);

2.在方法里面通过hasFocus来判断窗口是否已经显示并开始创建创建界面

//判断是否已经显示

if(hasFocus){

RelativeLayout rl = findViewById(R.id.root_layout);

//获取背景视图

ImageView iv = findViewById(R.id.opView);

//背景视图的尺寸

int x = iv.getLeft();

int y = iv.getTop();

3.通过使用两次for循环给界面添加视图和线条

//创建9个点

for(int i = 0 ;i < 3;i++ ) {

for (int j = 0; j < 3; j++) {

//创建用于显示点的视图

ImageView dotView = new ImageView(this);

//隐藏视图

dotView.setVisibility(View.INVISIBLE);

//显示对应的图片

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 + 164 * scale) + (int)(99*scale*j);

//将控件添加到容器中

rl.addView(dotView, params);

}

}

提示,添加视图和添加线条的方式和上面类似,不同在于线条和视图中的布局参数不同,同时布局参数里面需要获取屏幕密度进行屏幕适配

//获取屏幕密度

float scale = getResources().getDisplayMetrics().density;

PS

今天学完下来给我的第一感觉就是一下子接受的知识点有点多,有点记不住,容易搞混淆。比如说ConstraintLayout里面Start—toEndOf = “ ”,和End_ toStart = " " 刚开始的时候有点被绕晕了,但,重写代码过后就明白了。另外,还有点就是对为什么需要用两个for循环来创建线条和视图还是有点不明白。

android 解锁图案,Android开发中的图案解锁相关推荐

  1. Android记录22-关于开发中账号绑定的逻辑处理

    Android记录22-关于开发中账号绑定的逻辑处理  转载请注明:IT_xiao小巫    博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要跟大家分享的是开发中我 ...

  2. android java 指针异常处理,Android程序员日常开发中异常总结

    CaptainAndroid.png Java异常 平时开发中遇到的java异常很多,因为引起原因一目了然,当然也有不好解决的,比如一个简单的空指针异常你可能始终无法找到其为空的原因,甚至使用前还做了 ...

  3. Android短视频app开发中如何实现上下滑动切换效果

    在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...

  4. android音乐播放器底部,android音乐播放器开发中所遇到的bug及解决方法

    这几天在写一个android版的音乐播放器,在开发过程中遇到了一些小问题 小bug,最后经过一番调试与查找 终于发现问题所在.现在将开发中的问题与解决方法分享给大家... 一,音乐播放器的界面我采用的 ...

  5. Android Builder模式在开发中的应用

    最近在学习图片加载框架Glide的时候,被他精简的写法震惊了.一句话,就可以搞定. Glide.with(mContext) .load(url) .centerCrop() .placeholder ...

  6. android 手机号分段_android开发中想获取双卡手机号码,两个号码的怎样获取?

    展开全部 Android的官方文档是32313133353236313431303231363533e58685e5aeb931333337626230没有提供相应的Api的,因为标准的Andoird ...

  7. ios与android指纹识别,iOS开发实现TouchID指纹解锁

    一直想实现一下指纹解锁,苦于一直没时间,最近终于闲了下来所以翻了翻文档看了看demo,完成了这篇教程.本功能实现起来是很简单的,因为苹果都已经帮我们封装好了,只需要实现几个方法就可以了. 实现效果图 ...

  8. 实现在Android本地视频播放器开发

    在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获 ...

  9. Android本地视频播放器开发--NDK编译FFmpeg

    在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获 ...

最新文章

  1. slice,substr和substring的区别
  2. 逐行计算、逐行递延、逐行更新
  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
  4. R语言实战应用精讲50篇(十四)-R语言构建层次分析模型
  5. K8S创建role命令示例
  6. block size在equipment download中的用法
  7. linux 一行代码,一行代码终结你的Linux~
  8. Dev XtraTreeList 学习笔记
  9. asp:Button 事件,点击事件 html Button runat=sever
  10. 一步步教你3个月打造10万IP的流量(实战演练)(admin9.com/波菜)
  11. 发光二极管pcb封装图画法_protel元件封装总结
  12. 移动通信-抗衰落技术
  13. Windows又又又更新?Win 12开发将于下个月开始
  14. Android怎么在Service中执行耗时操作
  15. 算法笔记习题 2-9小节
  16. Qt高级教程图形视图部分
  17. 转换工具推荐:如何将PDF文档转换为PPT演示文稿
  18. 碳排放权、碳交易日度数据分部门、能源碳排放面板数据
  19. SecureCRTSecureFX(一):SecureCRT的介绍与下载安装
  20. 注册表编程,程序记忆功能

热门文章

  1. ACL扩展IP访问控制列表配置
  2. 如何去除电镀废水中的铬、镍、铜
  3. 手把手教你在windows下源码编译Open3D
  4. 净空法师:同修净土与般若
  5. 运营新人掌握会这些工具,可提升80%的工作效率
  6. python地图匹配_坐标点地图匹配方法
  7. win7安装onenote2016时碰到30094-1011(0)的 问题
  8. 【JZOJ A组】登山
  9. 华为云大数据-助力数据价值化,释放企业发展潜能
  10. 图灵的生物情结(上)——一个不走寻常路的化学反应