1 /* 2 * Copyright (C) 2008 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 */ 16 17 package android.widget; 18 19 import android.annotation.Widget; 20 import android.compat.annotation.UnsupportedAppUsage; 21 import android.content.Context; 22 import android.util.AttributeSet; 23 import android.view.LayoutInflater; 24 import android.view.MotionEvent; 25 import android.view.View; 26 import android.view.animation.AlphaAnimation; 27 28 import com.android.internal.R; 29 30 31 /** 32 * The {@code ZoomControls} class displays a simple set of controls used for zooming and 33 * provides callbacks to register for events. 34 * @deprecated This functionality and UI is better handled with custom views and layouts 35 * rather than a dedicated zoom-control widget 36 */ 37 @Deprecated 38 @Widget 39 public class ZoomControls extends LinearLayout { 40 41 @UnsupportedAppUsage 42 private final ZoomButton mZoomIn; 43 @UnsupportedAppUsage 44 private final ZoomButton mZoomOut; 45 ZoomControls(Context context)46 public ZoomControls(Context context) { 47 this(context, null); 48 } 49 ZoomControls(Context context, AttributeSet attrs)50 public ZoomControls(Context context, AttributeSet attrs) { 51 super(context, attrs); 52 setFocusable(false); 53 54 LayoutInflater inflater = (LayoutInflater) context 55 .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 56 inflater.inflate(R.layout.zoom_controls, this, // we are the parent 57 true); 58 59 mZoomIn = (ZoomButton) findViewById(R.id.zoomIn); 60 mZoomOut = (ZoomButton) findViewById(R.id.zoomOut); 61 } 62 setOnZoomInClickListener(OnClickListener listener)63 public void setOnZoomInClickListener(OnClickListener listener) { 64 mZoomIn.setOnClickListener(listener); 65 } 66 setOnZoomOutClickListener(OnClickListener listener)67 public void setOnZoomOutClickListener(OnClickListener listener) { 68 mZoomOut.setOnClickListener(listener); 69 } 70 71 /* 72 * Sets how fast you get zoom events when the user holds down the 73 * zoom in/out buttons. 74 */ setZoomSpeed(long speed)75 public void setZoomSpeed(long speed) { 76 mZoomIn.setZoomSpeed(speed); 77 mZoomOut.setZoomSpeed(speed); 78 } 79 80 @Override onTouchEvent(MotionEvent event)81 public boolean onTouchEvent(MotionEvent event) { 82 83 /* Consume all touch events so they don't get dispatched to the view 84 * beneath this view. 85 */ 86 return true; 87 } 88 show()89 public void show() { 90 fade(View.VISIBLE, 0.0f, 1.0f); 91 } 92 hide()93 public void hide() { 94 fade(View.GONE, 1.0f, 0.0f); 95 } 96 fade(int visibility, float startAlpha, float endAlpha)97 private void fade(int visibility, float startAlpha, float endAlpha) { 98 AlphaAnimation anim = new AlphaAnimation(startAlpha, endAlpha); 99 anim.setDuration(500); 100 startAnimation(anim); 101 setVisibility(visibility); 102 } 103 setIsZoomInEnabled(boolean isEnabled)104 public void setIsZoomInEnabled(boolean isEnabled) { 105 mZoomIn.setEnabled(isEnabled); 106 } 107 setIsZoomOutEnabled(boolean isEnabled)108 public void setIsZoomOutEnabled(boolean isEnabled) { 109 mZoomOut.setEnabled(isEnabled); 110 } 111 112 @Override hasFocus()113 public boolean hasFocus() { 114 return mZoomIn.hasFocus() || mZoomOut.hasFocus(); 115 } 116 117 @Override getAccessibilityClassName()118 public CharSequence getAccessibilityClassName() { 119 return ZoomControls.class.getName(); 120 } 121 } 122