Android自定义滑动解锁控件使用详解

作者:lp506954774 时间:2022-08-20 05:36:38 

最近的项目里用到了,在网上找不到合适的,于是自己写了个简单的,带回弹效果:

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

标签:Android,滑动解锁
0
投稿

猜你喜欢

  • Java中的显示锁ReentrantLock使用与原理详解

    2021-11-14 07:04:00
  • C# 关于LoadLibrary的疑问详解

    2023-07-26 23:14:10
  • Spring boot2X Consul如何使用Feign实现服务调用

    2022-04-29 14:41:18
  • 详解Spring如何解析占位符

    2023-11-27 12:44:46
  • Intellij IDEA配置Jetty的方法示例

    2023-05-02 04:13:12
  • OkHttp3中默认不保持Cookie的解决方法

    2021-10-25 15:20:50
  • springboot访问template下的html页面的实现配置

    2023-02-09 23:33:21
  • C#实现调用本机摄像头实例

    2022-07-01 19:54:49
  • Android中检查、监听电量和充电状态的方法

    2023-05-15 23:23:19
  • WPF开发之实现一种三轴机械手控件

    2021-10-29 19:16:29
  • 基于Spring Boot应用ApplicationEvent案例场景

    2023-08-17 22:38:12
  • Kotlin LinearLayout与RelativeLayout布局使用详解

    2021-12-06 02:07:30
  • C#实现读写ini文件类实例

    2023-09-06 18:47:00
  • C#延时函数的使用说明

    2023-10-11 19:58:34
  • 使用idea和gradle编译spring5源码的方法步骤

    2022-04-02 12:21:53
  • java中实现分页的几种常见方式总结

    2021-12-24 13:32:49
  • Java实现发送邮件并携带附件

    2023-07-23 19:02:25
  • 10种简单的Java性能优化

    2023-06-20 20:43:41
  • Java并发(Runnable+Thread)实现硬盘文件搜索功能

    2023-05-06 04:59:22
  • 详解Spring Data JPA使用@Query注解(Using @Query)

    2023-11-29 14:49:34
  • asp之家 软件编程 m.aspxhome.com