1604f6df08860406543b22a8f59eded909ffb23a6Winson Chung/* 2604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * Copyright (C) 2012 The Android Open Source Project 3604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * 4604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 5604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * you may not use this file except in compliance with the License. 6604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * You may obtain a copy of the License at 7604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * 8604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * http://www.apache.org/licenses/LICENSE-2.0 9604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * 10604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * Unless required by applicable law or agreed to in writing, software 11604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * distributed under the License is distributed on an "AS IS" BASIS, 12604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * See the License for the specific language governing permissions and 14604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * limitations under the License. 15604f6df08860406543b22a8f59eded909ffb23a6Winson Chung */ 16604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 17604f6df08860406543b22a8f59eded909ffb23a6Winson Chungpackage com.android.launcher2; 18604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 19604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.content.Context; 20604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.content.res.TypedArray; 21604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.util.AttributeSet; 225c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganovimport android.view.MotionEvent; 23604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.view.View; 24604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.widget.LinearLayout; 25604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 26604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport com.android.launcher.R; 27604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 28604f6df08860406543b22a8f59eded909ffb23a6Winson Chungpublic class DrawableStateProxyView extends LinearLayout { 29604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 30604f6df08860406543b22a8f59eded909ffb23a6Winson Chung private View mView; 31604f6df08860406543b22a8f59eded909ffb23a6Winson Chung private int mViewId; 32604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 33604f6df08860406543b22a8f59eded909ffb23a6Winson Chung public DrawableStateProxyView(Context context) { 34604f6df08860406543b22a8f59eded909ffb23a6Winson Chung this(context, null); 35604f6df08860406543b22a8f59eded909ffb23a6Winson Chung } 36604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 37604f6df08860406543b22a8f59eded909ffb23a6Winson Chung public DrawableStateProxyView(Context context, AttributeSet attrs) { 38604f6df08860406543b22a8f59eded909ffb23a6Winson Chung this(context, attrs, 0); 39604f6df08860406543b22a8f59eded909ffb23a6Winson Chung } 40604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 415c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov 42604f6df08860406543b22a8f59eded909ffb23a6Winson Chung public DrawableStateProxyView(Context context, AttributeSet attrs, int defStyle) { 43604f6df08860406543b22a8f59eded909ffb23a6Winson Chung super(context, attrs, defStyle); 44604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 45604f6df08860406543b22a8f59eded909ffb23a6Winson Chung TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DrawableStateProxyView, 46604f6df08860406543b22a8f59eded909ffb23a6Winson Chung defStyle, 0); 47604f6df08860406543b22a8f59eded909ffb23a6Winson Chung mViewId = a.getResourceId(R.styleable.DrawableStateProxyView_sourceViewId, -1); 48604f6df08860406543b22a8f59eded909ffb23a6Winson Chung a.recycle(); 49604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 50604f6df08860406543b22a8f59eded909ffb23a6Winson Chung setFocusable(false); 51604f6df08860406543b22a8f59eded909ffb23a6Winson Chung } 52604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 53604f6df08860406543b22a8f59eded909ffb23a6Winson Chung @Override 54604f6df08860406543b22a8f59eded909ffb23a6Winson Chung protected void drawableStateChanged() { 55604f6df08860406543b22a8f59eded909ffb23a6Winson Chung super.drawableStateChanged(); 56604f6df08860406543b22a8f59eded909ffb23a6Winson Chung 57604f6df08860406543b22a8f59eded909ffb23a6Winson Chung if (mView == null) { 58604f6df08860406543b22a8f59eded909ffb23a6Winson Chung View parent = (View) getParent(); 59604f6df08860406543b22a8f59eded909ffb23a6Winson Chung mView = parent.findViewById(mViewId); 60604f6df08860406543b22a8f59eded909ffb23a6Winson Chung } 61604f6df08860406543b22a8f59eded909ffb23a6Winson Chung mView.setPressed(isPressed()); 62604f6df08860406543b22a8f59eded909ffb23a6Winson Chung mView.setHovered(isHovered()); 63604f6df08860406543b22a8f59eded909ffb23a6Winson Chung } 645c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov 655c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov @Override 665c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov public boolean onHoverEvent(MotionEvent event) { 675c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov return false; 685c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov } 69604f6df08860406543b22a8f59eded909ffb23a6Winson Chung} 70