Android自定义滑动解锁控件使用详解
时间:2022-07-28
本文章向大家介绍Android自定义滑动解锁控件使用详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近的项目里用到了,在网上找不到合适的,于是自己写了个简单的,带回弹效果:
可以自定义的属性有:
<!-- 滑动解锁控件 xml配置属性 --
<declare-styleable name="SlideToUnlockView"
<attr name="slideImageViewWidth" format="dimension"/ <!-- 滑块宽度 --
<attr name="slideImageViewResId" format="reference"/ <!-- 滑块资源id --
<attr name="slideImageViewResIdAfter" format="reference"/ <!-- 滑动到右边时,滑块资源id --
<attr name="viewBackgroundResId" format="reference"/ <!-- 背景资源id --
<attr name="textHint" format="string"/ <!-- 文本内容 --
<attr name="textSize" format="integer"/ <!-- 文本字号 --
<attr name="textColorResId" format="color"/ <!-- 文本字色 --
<attr name="slideThreshold" format="float"/ <!-- 滑动阈值,默认是0.5,当右滑距离不满整个控件宽度的0.5,就会回弹至左边 --
</declare-styleable
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:chuck="http://schemas.android.com/apk/res-auto"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.qdong.slidetounlockdemo.MainActivity"
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/relativeLayout"
<!-- chuck:textSize="14sp"
chuck:textColorResId="@color/colorWhite"--
<com.qdong.slide_to_unlock_view.CustomSlideToUnlockView
android:id="@+id/slide_to_unlock"
android:layout_width="match_parent"
android:layout_height="50dp"
chuck:viewBackgroundResId="@drawable/shape_round_normal_green"
chuck:slideImageViewWidth="@dimen/slide_width"
chuck:slideImageViewResId="@mipmap/icon_slide"
chuck:slideImageViewResIdAfter="@mipmap/ic_launcher"
chuck:slideThreshold="0.5"
chuck:textSize="6"
chuck:textHint="@string/hint"
chuck:textColorResId="@color/colorWhite"
</com.qdong.slide_to_unlock_view.CustomSlideToUnlockView
</RelativeLayout
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="reset"
android:id="@+id/button"
android:layout_below="@+id/relativeLayout"
android:layout_centerHorizontal="true"
android:layout_marginTop="150dp"/
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_text"
android:text="slide distance:"
android:layout_alignBottom="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginBottom="60dp"/
</RelativeLayout
MainActivity:
public class MainActivity extends AppCompatActivity {
private com.qdong.slide_to_unlock_view.CustomSlideToUnlockView mCustomSlideToUnlockView;
private TextView tv_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCustomSlideToUnlockView= (com.qdong.slide_to_unlock_view.CustomSlideToUnlockView) findViewById(R.id.slide_to_unlock);
tv_text= (TextView) findViewById(R.id.tv_text);
CustomSlideToUnlockView.CallBack callBack=new CustomSlideToUnlockView.CallBack() {
@Override
public void onSlide(int distance) {
tv_text.setText("slide distance:"+distance);
}
@Override
public void onUnlocked() {
tv_text.setText("onUnlocked");
}
};
mCustomSlideToUnlockView.setmCallBack(callBack);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCustomSlideToUnlockView.resetView();
}
});
}
}
下载地址:
https://github.com/506954774/AndroidCustomSlideToUnlockView
以上就是本文的全部内容,希望对大家的学习有所帮助。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- java之springboot之快速入门-Spring Initializr方式创建项目
- springboot之Web综合开发
- springboot之mybatis
- springboot之mybatis多数据源最简解决方案
- 蓝桥杯突击复习准备——部分算法汇总
- 小解c# foreach原理
- 多包依赖管理--Lerna
- Flume概述
- Flume中常见的组件
- 程序员进阶之算法练习(四十八)LeetCode
- [C#]不通过事件方式获取键盘按钮按下的状态
- 15.深入k8s:Event事件处理及其源码分析
- SwiftUI:使用计时器重复触发事件
- SwiftUI:获取应用进入后台的通知
- Windows格式化namenode报错 - Error: JAVA_HOME is incorrectly set. Please update F:hadoopconfhadoop-e...