SeekBarBindingAdapter.java revision 716ba89e7f459f49ea85070d4710c1d79d715298
1/* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package android.databinding.adapters; 17 18import android.databinding.BindingAdapter; 19import android.widget.SeekBar; 20import android.widget.SeekBar.OnSeekBarChangeListener; 21 22public class SeekBarBindingAdapter { 23 @BindingAdapter("android:onProgressChanged") 24 public static void setListener(SeekBar view, OnProgressChanged listener) { 25 setListener(view, null, null, listener); 26 } 27 28 @BindingAdapter("android:onStartTrackingTouch") 29 public static void setListener(SeekBar view, OnStartTrackingTouch listener) { 30 setListener(view, listener, null, null); 31 } 32 33 @BindingAdapter("android:onStopTrackingTouch") 34 public static void setListener(SeekBar view, OnStopTrackingTouch listener) { 35 setListener(view, null, listener, null); 36 } 37 38 @BindingAdapter({"android:onStartTrackingTouch", "android:onStopTrackingTouch"}) 39 public static void setListener(SeekBar view, final OnStartTrackingTouch start, 40 final OnStopTrackingTouch stop) { 41 setListener(view, start, stop, null); 42 } 43 44 @BindingAdapter({"android:onStartTrackingTouch", "android:onProgressChanged"}) 45 public static void setListener(SeekBar view, final OnStartTrackingTouch start, 46 final OnProgressChanged progressChanged) { 47 setListener(view, start, null, progressChanged); 48 } 49 50 @BindingAdapter({"android:onStopTrackingTouch", "android:onProgressChanged"}) 51 public static void setListener(SeekBar view, final OnStopTrackingTouch stop, 52 final OnProgressChanged progressChanged) { 53 setListener(view, null, stop, progressChanged); 54 } 55 56 @BindingAdapter({"android:onStartTrackingTouch", "android:onStopTrackingTouch", "android:onProgressChanged"}) 57 public static void setListener(SeekBar view, final OnStartTrackingTouch start, 58 final OnStopTrackingTouch stop, final OnProgressChanged progressChanged) { 59 if (start == null && stop == null && progressChanged == null) { 60 view.setOnSeekBarChangeListener(null); 61 } else { 62 view.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 63 @Override 64 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 65 if (progressChanged != null) { 66 progressChanged.onProgressChanged(seekBar, progress, fromUser); 67 } 68 } 69 70 @Override 71 public void onStartTrackingTouch(SeekBar seekBar) { 72 if (start != null) { 73 start.onStartTrackingTouch(seekBar); 74 } 75 } 76 77 @Override 78 public void onStopTrackingTouch(SeekBar seekBar) { 79 if (stop != null) { 80 stop.onStopTrackingTouch(seekBar); 81 } 82 } 83 }); 84 } 85 } 86 87 public interface OnStartTrackingTouch { 88 void onStartTrackingTouch(SeekBar seekBar); 89 } 90 91 public interface OnStopTrackingTouch { 92 void onStopTrackingTouch(SeekBar seekBar); 93 } 94 95 public interface OnProgressChanged { 96 void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser); 97 } 98} 99