SearchDropTargetBar.java revision 4c98d9235d164680186180974719f551cf935d08
14c98d9235d164680186180974719f551cf935d08Winson Chung/* 24c98d9235d164680186180974719f551cf935d08Winson Chung * Copyright (C) 2011 The Android Open Source Project 34c98d9235d164680186180974719f551cf935d08Winson Chung * 44c98d9235d164680186180974719f551cf935d08Winson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 54c98d9235d164680186180974719f551cf935d08Winson Chung * you may not use this file except in compliance with the License. 64c98d9235d164680186180974719f551cf935d08Winson Chung * You may obtain a copy of the License at 74c98d9235d164680186180974719f551cf935d08Winson Chung * 84c98d9235d164680186180974719f551cf935d08Winson Chung * http://www.apache.org/licenses/LICENSE-2.0 94c98d9235d164680186180974719f551cf935d08Winson Chung * 104c98d9235d164680186180974719f551cf935d08Winson Chung * Unless required by applicable law or agreed to in writing, software 114c98d9235d164680186180974719f551cf935d08Winson Chung * distributed under the License is distributed on an "AS IS" BASIS, 124c98d9235d164680186180974719f551cf935d08Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134c98d9235d164680186180974719f551cf935d08Winson Chung * See the License for the specific language governing permissions and 144c98d9235d164680186180974719f551cf935d08Winson Chung * limitations under the License. 154c98d9235d164680186180974719f551cf935d08Winson Chung */ 164c98d9235d164680186180974719f551cf935d08Winson Chung 174c98d9235d164680186180974719f551cf935d08Winson Chungpackage com.android.launcher2; 184c98d9235d164680186180974719f551cf935d08Winson Chung 194c98d9235d164680186180974719f551cf935d08Winson Chungimport android.content.Context; 204c98d9235d164680186180974719f551cf935d08Winson Chungimport android.content.res.Resources; 214c98d9235d164680186180974719f551cf935d08Winson Chungimport android.graphics.PorterDuff; 224c98d9235d164680186180974719f551cf935d08Winson Chungimport android.graphics.PorterDuffColorFilter; 234c98d9235d164680186180974719f551cf935d08Winson Chungimport android.util.AttributeSet; 244c98d9235d164680186180974719f551cf935d08Winson Chungimport android.view.View; 254c98d9235d164680186180974719f551cf935d08Winson Chungimport android.widget.FrameLayout; 264c98d9235d164680186180974719f551cf935d08Winson Chung 274c98d9235d164680186180974719f551cf935d08Winson Chungimport com.android.launcher.R; 284c98d9235d164680186180974719f551cf935d08Winson Chung 294c98d9235d164680186180974719f551cf935d08Winson Chung/* 304c98d9235d164680186180974719f551cf935d08Winson Chung * Ths bar will manage the transition between the QSB search bar and the delete drop 314c98d9235d164680186180974719f551cf935d08Winson Chung * targets so that each of the individual IconDropTargets don't have to. 324c98d9235d164680186180974719f551cf935d08Winson Chung */ 334c98d9235d164680186180974719f551cf935d08Winson Chungpublic class SearchDropTargetBar extends FrameLayout implements DragController.DragListener { 344c98d9235d164680186180974719f551cf935d08Winson Chung 354c98d9235d164680186180974719f551cf935d08Winson Chung private static final int sTransitionInDuration = 275; 364c98d9235d164680186180974719f551cf935d08Winson Chung private static final int sTransitionOutDuration = 200; 374c98d9235d164680186180974719f551cf935d08Winson Chung 384c98d9235d164680186180974719f551cf935d08Winson Chung private View mQSBSearchBar; 394c98d9235d164680186180974719f551cf935d08Winson Chung private View mDropTargetBar; 404c98d9235d164680186180974719f551cf935d08Winson Chung private IconDropTarget mInfoDropTarget; 414c98d9235d164680186180974719f551cf935d08Winson Chung private IconDropTarget mDeleteDropTarget; 424c98d9235d164680186180974719f551cf935d08Winson Chung 434c98d9235d164680186180974719f551cf935d08Winson Chung public SearchDropTargetBar(Context context, AttributeSet attrs) { 444c98d9235d164680186180974719f551cf935d08Winson Chung this(context, attrs, 0); 454c98d9235d164680186180974719f551cf935d08Winson Chung } 464c98d9235d164680186180974719f551cf935d08Winson Chung 474c98d9235d164680186180974719f551cf935d08Winson Chung public SearchDropTargetBar(Context context, AttributeSet attrs, int defStyle) { 484c98d9235d164680186180974719f551cf935d08Winson Chung super(context, attrs, defStyle); 494c98d9235d164680186180974719f551cf935d08Winson Chung } 504c98d9235d164680186180974719f551cf935d08Winson Chung 514c98d9235d164680186180974719f551cf935d08Winson Chung public void setup(Launcher launcher, DragController dragController) { 524c98d9235d164680186180974719f551cf935d08Winson Chung dragController.addDragListener(this); 534c98d9235d164680186180974719f551cf935d08Winson Chung dragController.addDragListener(mInfoDropTarget); 544c98d9235d164680186180974719f551cf935d08Winson Chung dragController.addDragListener(mDeleteDropTarget); 554c98d9235d164680186180974719f551cf935d08Winson Chung dragController.addDropTarget(mInfoDropTarget); 564c98d9235d164680186180974719f551cf935d08Winson Chung dragController.addDropTarget(mDeleteDropTarget); 574c98d9235d164680186180974719f551cf935d08Winson Chung mInfoDropTarget.setLauncher(launcher); 584c98d9235d164680186180974719f551cf935d08Winson Chung mDeleteDropTarget.setLauncher(launcher); 594c98d9235d164680186180974719f551cf935d08Winson Chung } 604c98d9235d164680186180974719f551cf935d08Winson Chung 614c98d9235d164680186180974719f551cf935d08Winson Chung @Override 624c98d9235d164680186180974719f551cf935d08Winson Chung protected void onFinishInflate() { 634c98d9235d164680186180974719f551cf935d08Winson Chung super.onFinishInflate(); 644c98d9235d164680186180974719f551cf935d08Winson Chung 654c98d9235d164680186180974719f551cf935d08Winson Chung // Get the individual components 664c98d9235d164680186180974719f551cf935d08Winson Chung mQSBSearchBar = findViewById(R.id.qsb_search_bar); 674c98d9235d164680186180974719f551cf935d08Winson Chung mDropTargetBar = findViewById(R.id.drag_target_bar); 684c98d9235d164680186180974719f551cf935d08Winson Chung mInfoDropTarget = (IconDropTarget) mDropTargetBar.findViewById(R.id.info_target); 694c98d9235d164680186180974719f551cf935d08Winson Chung mDeleteDropTarget = (IconDropTarget) mDropTargetBar.findViewById(R.id.delete_target); 704c98d9235d164680186180974719f551cf935d08Winson Chung } 714c98d9235d164680186180974719f551cf935d08Winson Chung 724c98d9235d164680186180974719f551cf935d08Winson Chung /* 734c98d9235d164680186180974719f551cf935d08Winson Chung * DragController.DragListener implementation 744c98d9235d164680186180974719f551cf935d08Winson Chung */ 754c98d9235d164680186180974719f551cf935d08Winson Chung @Override 764c98d9235d164680186180974719f551cf935d08Winson Chung public void onDragStart(DragSource source, Object info, int dragAction) { 774c98d9235d164680186180974719f551cf935d08Winson Chung // Animate out the QSB search bar, and animate in the drop target bar 784c98d9235d164680186180974719f551cf935d08Winson Chung mQSBSearchBar.animate().alpha(0f).setDuration(sTransitionOutDuration); 794c98d9235d164680186180974719f551cf935d08Winson Chung mDropTargetBar.animate().alpha(1f).setDuration(sTransitionInDuration); 804c98d9235d164680186180974719f551cf935d08Winson Chung } 814c98d9235d164680186180974719f551cf935d08Winson Chung 824c98d9235d164680186180974719f551cf935d08Winson Chung @Override 834c98d9235d164680186180974719f551cf935d08Winson Chung public void onDragEnd() { 844c98d9235d164680186180974719f551cf935d08Winson Chung // Restore the QSB search bar, and animate out the drop target bar 854c98d9235d164680186180974719f551cf935d08Winson Chung mDropTargetBar.animate().alpha(0f).setDuration(sTransitionOutDuration); 864c98d9235d164680186180974719f551cf935d08Winson Chung mQSBSearchBar.animate().alpha(1f).setDuration(sTransitionInDuration); 874c98d9235d164680186180974719f551cf935d08Winson Chung } 884c98d9235d164680186180974719f551cf935d08Winson Chung} 89