Android 自定义控件 按钮滚动选择

效果图

这里写图片描述

代码实现

package com.demo.ui.view;

import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Handler;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.demo.R;
import com.demo.factory.Axis;
import com.demo.utils.LogUtils;

import java.util.ArrayList;
import java.util.List;

public class AirTemperatureView extends RelativeLayout{

    private Context context;
    private TextView tv;
    private TextView tv_middle;
   // private TextView tv_middle_small;
    private  RelativeLayout Auto_layout;
    private StringScrollPicker stringScrollPicker;
    private List<CharSequence> newList;
    private ImageView img;
    private ImageView img_left;
    private ImageView img_right;

    private int mPosition;
    private Handler handler = new Handler();
    /**
     * 延迟线程,看是否还有下一个字符输入
     */
    private Runnable delayRun = new Runnable() {
        @Override
        public void run() {
            stringScrollPicker.setVisibility(INVISIBLE);
            img.setBackgroundResource(R.drawable.air_temp_bg);
            tv_middle.setText(newList.get(mPosition));
            //tv.setText("电池剩余"+newList.get(mPosition)+"%提醒你");
            tv_middle.setVisibility(VISIBLE);
            img_right.setVisibility(VISIBLE);
            img_left.setVisibility(VISIBLE);

            if(mListener != null) {
                mListener.setAirTemper(mPosition+18);
            }
            LogUtils.e("空调刷新===","温度");

        }
    };

    public AirTemperatureView(Context context){
        super(context);
        this.context = context;
        init();
    }

    @TargetApi(Build.VERSION_CODES.M)
    public void init(){
        super.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(230)));
        LinearLayout parent = new LinearLayout(context);
        parent.setOrientation(LinearLayout.VERTICAL);
        LayoutParams parent_Params = new LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(230));
        super.addView(parent,parent_Params);

        RelativeLayout tv_layout = new RelativeLayout(context);
        LinearLayout.LayoutParams tv_layout_Params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(50));
        parent.addView(tv_layout,tv_layout_Params);
        tv = new TextView(context);
        tv.setText("温度");
        tv.setTextSize(Axis.scaleTextSize(36));
        tv.setTextColor(ContextCompat.getColor(context, R.color.white_70_color));//
        LayoutParams tv_Params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        tv_Params.addRule(RelativeLayout.CENTER_IN_PARENT);
        tv_layout.addView(tv,tv_Params);


        /**
         * 滑动选择器
         */
        Auto_layout = new RelativeLayout(context);
        LinearLayout.LayoutParams Auto_layout_Params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(150));
        Auto_layout_Params.setMargins(0,Axis.scaleX(30),0,0);
        parent.addView(Auto_layout,Auto_layout_Params);


        img = new ImageView(context);
        img.setId(R.id.EleRemindImage);
        img.setBackgroundResource(R.drawable.air_temp_bg);
        LayoutParams img_Params = new LayoutParams(Axis.scaleX(150), Axis.scaleX(150));
        img_Params.addRule(RelativeLayout.CENTER_IN_PARENT);
        Auto_layout.addView(img,img_Params);


        img_left = new ImageView(context);
        img_left.setBackgroundResource(R.drawable.battery_point);
        LayoutParams img_left_Params = new LayoutParams(Axis.scaleX(14), Axis.scaleX(14));
        img_left_Params.addRule(RelativeLayout.CENTER_VERTICAL);
        img_left_Params.addRule(RelativeLayout.LEFT_OF,R.id.EleRemindImage);
        img_left_Params.setMargins(0,0,Axis.scaleX(134),0);
        Auto_layout.addView(img_left,img_left_Params);


        img_right = new ImageView(context);
        img_right.setBackgroundResource(R.drawable.battery_point);
        LayoutParams img_right_Params = new LayoutParams(Axis.scaleX(14), Axis.scaleX(14));
        img_right_Params.addRule(RelativeLayout.CENTER_VERTICAL);
        img_right_Params.addRule(RelativeLayout.RIGHT_OF,R.id.EleRemindImage);
        img_right_Params.setMargins(Axis.scaleX(134),0,0,0);
        Auto_layout.addView(img_right,img_right_Params);



        tv_middle = new TextView(context);
        tv_middle.setTextSize(Axis.scaleTextSize(64));
        tv_middle.setGravity(Gravity.CENTER);
        tv_middle.setTextColor(0xFFFFFFFF);
        LayoutParams tv_middle_Params = new LayoutParams(Axis.scaleX(150), Axis.scaleX(150));
        tv_middle_Params.addRule(RelativeLayout.CENTER_IN_PARENT);
        Auto_layout.addView(tv_middle,tv_middle_Params);


        newList = new ArrayList<>();
        newList.add("18");
        newList.add("19");
        newList.add("20");
        newList.add("21");
        newList.add("22");
        newList.add("23");
        newList.add("24");
        newList.add("25");
        newList.add("26");
        newList.add("27");
        newList.add("28");
        newList.add("29");
        newList.add("30");
        newList.add("31");
        newList.add("32");


        tv_middle.setText(newList.get(0));

        stringScrollPicker = new StringScrollPicker(context);
        stringScrollPicker.setHorizontal(true);
        stringScrollPicker.setVisibleItemCount(5);//可见5个  第3个  (3-1)个位中间
        stringScrollPicker.setCenterPosition(2);
        stringScrollPicker.setIsCirculation(true);
        stringScrollPicker.setCanTap(true);
        stringScrollPicker.setDisallowInterceptTouch(true);
        LayoutParams stringScrollPicker_Params = new LayoutParams(LayoutParams.MATCH_PARENT,Axis.scaleX(150));
        Auto_layout.addView(stringScrollPicker,stringScrollPicker_Params);
        stringScrollPicker.setData(newList);
        stringScrollPicker.setOnSelectedListener(new ScrollPickerView.OnSelectedListener() {
            @Override
            public void onSelected(ScrollPickerView scrollPickerView, final int position) {
                mPosition = position;
                handler.postDelayed(delayRun, 1500);

            }
        });


        stringScrollPicker.setOnSelectedListener(new StringScrollPicker.OnDataSelectedListener() {
            @Override
            public void DataSelected(CharSequence data) {
                //tv.setText("电池剩余"+data+"%提醒你");
            }
        });

        stringScrollPicker.setSelectedPosition(0,false);//中间Item位置

        stringScrollPicker.setVisibility(INVISIBLE);

        stringScrollPicker.setOnTouchListener(new OnTouchListener() {
            @Override
            publi
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值