当前位置:   article > 正文

实现一个可以手势调整亮度,声音和进度条的控件_android 亮度进度条

android 亮度进度条

项目开发中当遇到需要我们自己手动实现屏幕滑动,或者某个控件滑动来控制屏幕亮度,声音及进度条等功能的时候我们会找网上的轮子,但是很多时候比较坑,实现起来要尝试多次也不一定能够找到理想的,下面展示一个成熟项目中的手动滑动实现方式,一般知乎,B站,腾讯视频,爱奇艺等都是使用该功能。

最重要的是丝滑,流畅。

下面开始实现步骤一:

自定义一个手势UI类,一般播放器等都是在Controller中实现,这里写个MyGestureView类如下,由于注释写的比较详细,这里不做讲解如下:

/**
 * author : AndyYuan
 * e-mail : 01810788@smg.cn
 * date   : 2021/9/3 000315:06
 * desc   : 手动实现的控制器
 * version: 2.0
 */
public class MyGestureView extends FrameLayout implements Handler.Callback {

    //最外层容器
    private LinearLayout container;
    //显示进度百分比
    private TextView tvPercent;
    //百分比进度条
    private ProgressBar pbPercent;
    private Handler handler;
    //手势监听音量
    private GestureDetector gestureDetector;
    private AudioManager audioManager;
    private WindowManager windowManager;
    //当前声音
    private int nowVolume = -1;
    //当前的屏幕亮度
    private float mBrightness;
    protected boolean isFullScreen = false;
    private int currentDuration = 0;
    private int mSeekPosition;
    //控制屏幕手势
    private boolean mFirstTouch;
    private boolean mChangePosition;
    private boolean mChangeBrightness;
    private boolean mChangeVolume;
    //当前界面
    private Activity context;
    //seekBar最大进度
    private final int SEEK_MAX = 100;
    //控制条自动隐藏时间
    private final int DEFAULT_TIME = 5 * 1000;
    //隐藏控制条
    private final int FADE_OUT = 1;
    //隐藏快进框
    private final int DIALOG_TIME = 3 * 1000;
    private final int FADE_DIALOG = 2;


    public MyGestureView(Context context) {
        super(context);
        initView(context);
    }

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

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

    public void initView(Context context) {
        LayoutInflater.from(context).inflate(R.layout.gesture_layout, this);
        container = findViewById(R.id.center_container);
        tvPercent = findViewById(R.id.tv_percent);
        pbPercent = findViewById(R.id.pro_percent);
        handler = new Handler(this);
        pbPercent.setMax(SEEK_MAX);
    }

    public void setActivity(Activity activity) {
        this.context &
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/699970
推荐阅读
相关标签
  

闽ICP备14008679号