16a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang/* 26a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * Copyright (C) 2010 The Android Open Source Project 36a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * 46a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * Licensed under the Apache License, Version 2.0 (the "License"); 56a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * you may not use this file except in compliance with the License. 66a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * You may obtain a copy of the License at 76a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * 86a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * http://www.apache.org/licenses/LICENSE-2.0 96a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * 106a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * Unless required by applicable law or agreed to in writing, software 116a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * distributed under the License is distributed on an "AS IS" BASIS, 126a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * See the License for the specific language governing permissions and 146a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * limitations under the License. 156a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang */ 166a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 176a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangpackage com.android.gallery3d.photoeditor.actions; 186a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 196a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.content.Context; 206a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.content.res.Resources; 216a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.graphics.Bitmap; 226a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.graphics.Canvas; 236a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.graphics.drawable.BitmapDrawable; 246a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.graphics.drawable.Drawable; 256a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.util.AttributeSet; 266a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport android.widget.SeekBar; 276a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 286a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangimport com.android.gallery3d.R; 296a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 306a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang/** 316a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang * Seek-bar base that implements a draggable thumb that fits seek-bar height. 326a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang */ 336a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huangabstract class AbstractSeekBar extends SeekBar { 346a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 356a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang public AbstractSeekBar(Context context, AttributeSet attrs) { 366a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang super(context, attrs); 376a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang } 386a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 396a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang @Override 406a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang protected void onSizeChanged(int w, int h, int oldw, int oldh) { 416a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang super.onSizeChanged(w, h, oldw, oldh); 426a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 436a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang // Scale the thumb to fit seek-bar height. 446a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang Resources res = getResources(); 456a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang Drawable thumb = res.getDrawable(R.drawable.photoeditor_seekbar_thumb); 466a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 476a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang // Set the left/right padding to half width of the thumb drawn. 486a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang int scaledWidth = thumb.getIntrinsicWidth() * h / thumb.getIntrinsicHeight(); 496a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang int padding = (scaledWidth + 1) / 2; 506a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang setPadding(padding, 0, padding, 0); 516a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 526a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang Bitmap bitmap = Bitmap.createBitmap(scaledWidth, h, Bitmap.Config.ARGB_8888); 536a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang Canvas canvas = new Canvas(bitmap); 546a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang thumb.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight()); 556a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang thumb.draw(canvas); 566a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang 576a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang setThumb(new BitmapDrawable(res, bitmap)); 586a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang } 596a12ad70df5da5052a8381e2cdda79e6a314cee9Yuli Huang} 60