美文网首页
【Android】控件拓展

【Android】控件拓展

作者: 感同身受_ | 来源:发表于2019-09-25 10:40 被阅读0次

一、RatingBar:星评分

<RatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:rating="5"/>//初始化为几颗星
mRatingBar = findViewById(R.id.ratingBar);
float rating = mRatingBar.getRating();//获取用户的评分

二、SeekBar:一个滑动条去控制图片的透明度

<SeekBar
        android:id="@+id/seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="255"//最大为255
        android:progress="255"/>//进度条最大为255
mImageView = findViewById(R.id.image);
        mSeekBar = findViewById(R.id.seekBar);
        mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                mImageView.setImageAlpha(progress);//安卓最低版本需要设置为17或以上,否则会报错
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

三、TimePicker:时间选择器

<TimePicker
        android:id="@+id/timePicker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
TimePicker tp = findViewById(R.id.timePicker);
        tp.setIs24HourView(true);//设置为24小时制
        //监听你选择的时间
        tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker timePicker, int hourOfDay, int minute) {
                String str = hourOfDay+"时"+minute+"分";
                Toast.makeText(TimePickerActivity.this,str,Toast.LENGTH_LONG).show();
            }
        });

四、Chronometer:时间计时器

<Chronometer
        android:id="@+id/chronometer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFF00"/>
Chronometer ch;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chronometer);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏显示
        ch = findViewById(R.id.mChronometer);
        ch.setBase(SystemClock.elapsedRealtime());//设置计时器的起始时间
        ch.setFormat("%s");//设置时间格式
        ch.start();//指定开始计时
        //为计时器绑定事件监听器,当计时器改变时触发该监听器
        ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                if(SystemClock.elapsedRealtime()-ch.getBase()>60){
                    ch.stop();//指定停止计时
                }
            }
        });
    }

拓展:做一个倒计时器

请看《android使用Chronometer做倒计时器》这篇文章

五、DatePicker:日期选择器

<DatePicker
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerInParent="true">

    </DatePicker>
    int year,month,day;
    DatePicker mDatePicker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        mDatePicker = findViewById(R.id.datePicker);
        Calendar calendar = Calendar.getInstance();
        year = calendar.get(Calendar.YEAR);
        month = calendar.get(Calendar.MONTH);
        day = calendar.get(Calendar.DAY_OF_MONTH);
        mDatePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                SecondActivity.this.year = year;
                SecondActivity.this.month = monthOfYear;
                SecondActivity.this.day = dayOfMonth;
                show(year,monthOfYear,dayOfMonth);
            }
        });

    }

    private void show(int year,int month,int day){
        String str = year + "年"+(month+1)+"月"+day+"日";
        Toast.makeText(SecondActivity.this,str,Toast.LENGTH_LONG).show();
    }

ImageSwitcher:图片切换器

<ImageSwitcher
        android:id="@+id/imageSwitcher"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        />
    private int[] arrayPicture = new int[]{R.drawable.bg,R.drawable.bg2,R.drawable.bg3,R.drawable.bg4
    ,R.drawable.bg5,R.drawable.bg6,R.drawable.bg7,R.drawable.bg8};//为切换准备图片
    private ImageSwitcher mImageSwitcher;//图片切换器
    private int index;//图片索引
    private float touchDownX;//手指触摸时
    private float touchUpX;//手指抬起时
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_showpicture);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏显示
        mImageSwitcher = findViewById(R.id.imageSwitcher);
        //视图工厂
        mImageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView imageView = new ImageView(ShowPictureActivity.this);//用于显示图片
                imageView.setImageResource(arrayPicture[index]);
                return imageView;
            }
        });
        //触摸监听
        mImageSwitcher.setOnTouchListener(new View.OnTouchListener() {
            @Override
            //判断手指的动作
            public boolean onTouch(View view, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN){//手指按下
                    touchDownX = event.getX();
                    return true;
                }else if(event.getAction() == MotionEvent.ACTION_UP){//手指抬起
                    touchUpX = event.getX();
                    if (touchUpX-touchDownX>100){
                        index=index==0?arrayPicture.length-1:index-1;
                        mImageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(ShowPictureActivity.this,R.anim.slide_out_right));//设置滑出动画
                        mImageSwitcher.setInAnimation(AnimationUtils.loadAnimation(ShowPictureActivity.this,R.anim.slide_in_left));//设置滑入动画
                        mImageSwitcher.setImageResource(arrayPicture[index]);
                    }else if(touchDownX-touchUpX>100){
                        index=index==arrayPicture.length-1?0:index+1;
                        mImageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(ShowPictureActivity.this,R.anim.slide_out_left));
                        mImageSwitcher.setInAnimation(AnimationUtils.loadAnimation(ShowPictureActivity.this,R.anim.slide_in_right));
                        mImageSwitcher.setImageResource(arrayPicture[index]);
                    }
                    return  true;
                }
                return false;
            }
        });
    }
动画资源文件:slide_in_left,其他的同理去做
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="1000"
        android:fromXDelta="-100%p"
        android:toXDelta="0"/>
</set>

相关文章

网友评论

      本文标题:【Android】控件拓展

      本文链接:https://www.haomeiwen.com/subject/rejwyctx.html