seekBar实现滑动解锁

本文介绍如何在Android应用中使用SeekBar组件实现滑动解锁的效果,通过 SeekBar 的滑动操作来触发解锁交互,提供了一种直观且易用的用户界面体验。文章附带有实际效果展示。
摘要由CSDN通过智能技术生成
今天android项目里突然要做一个滑动解锁的控件,nm,ui出图就喜欢按照IOS上的控件来,这次也不例外,不过IOS上的滑动解锁效果确实还是不错。好了,废话不多说,上代码。。。
关键的View代码SlidingSeekBar.java
/**
 * 描述:自定义滑动解锁(横向的)seekBar
 * 特点:自定义后seekBar只能滑动并禁用点击
 * 最关键的就是设置flag
 * Created by ruihe on 2016/5/28.
 */
public class SlidingSeekBar extends SeekBar implements SeekBar.OnSeekBarChangeListener, View.OnTouchListener {

    private Context mContext;
    /**
     * seekBar是否滑动的判断标志,默认为false
     */
    private boolean isSlide;
    /**
     * 每次手指按下时处在屏幕上的横坐标
     */
    private int mStartTouchX;
    /**
     * seekBar的状态监听
     */
    private OnSeekBarStatusListener mOnSeekBarStatusListener;
    private SlidingSeekBar mSlideSeekBar;
    private TextView tvHint;
    private View viewBg;
    private int[] mLocation = new int[2];

    public SlidingSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public SlidingSeekBar(Context context) {
        super(context);
    }

    public SlidingSeekBar(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void initSlideToRightUnlock(Context context, TextView tvHint, View v, OnSeekBarStatusListener onSeekBarStatusListener) {
        mSlideSeekBar = this;
        this.mContext = context;
        this.tvHint = tvHint;
        this.viewBg = v;
        this.mOnSeekBarStatusListener = onSeekBarStatusListener;
        mSlideSeekBar.setProgress(0);
        viewBg.setAlpha(0.0f);
        tvHint.setAlpha(1.0f);
        setOnTouchListener(this);
        setOnSeekBarChangeListener(this);
    }


    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        if (!fromUser)
            return;

        if (!isSlide) {
            seekBar.setProgress(0);
        } else {
            seekBar.setProgress(progress);
            float tempProgress = progress * 0.01f;
            viewBg.setAlpha(tempProgress);
            tvHint.setAlpha(1.0f - tempProgress * 2.0f);
        }

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekB
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值