17d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung/*
27d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * Copyright (C) 2011 The Android Open Source Project
37d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung *
47d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * Licensed under the Apache License, Version 2.0 (the "License");
57d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * you may not use this file except in compliance with the License.
67d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * You may obtain a copy of the License at
77d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung *
87d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung *      http://www.apache.org/licenses/LICENSE-2.0
97d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung *
107d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * Unless required by applicable law or agreed to in writing, software
117d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * distributed under the License is distributed on an "AS IS" BASIS,
127d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * See the License for the specific language governing permissions and
147d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung * limitations under the License.
157d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung */
167d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
177d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chungpackage com.android.launcher2;
187d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
197d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chungimport android.content.Context;
207d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chungimport android.graphics.Canvas;
217d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chungimport android.util.AttributeSet;
227d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chungimport android.widget.ImageView;
237d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
247d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chungpublic class HolographicImageView extends ImageView {
257d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
267d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    private final HolographicViewHelper mHolographicHelper;
277d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
287d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    public HolographicImageView(Context context) {
297d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        this(context, null);
307d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    }
317d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
327d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    public HolographicImageView(Context context, AttributeSet attrs) {
337d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        this(context, attrs, 0);
347d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    }
357d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
367d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    public HolographicImageView(Context context, AttributeSet attrs, int defStyle) {
377d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        super(context, attrs, defStyle);
387d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
397d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        mHolographicHelper = new HolographicViewHelper(context);
407d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    }
417d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
42bb185bdd57fcdb2c8ff9eee00347b116bab7db23Winson Chung    void invalidatePressedFocusedStates() {
43bb185bdd57fcdb2c8ff9eee00347b116bab7db23Winson Chung        mHolographicHelper.invalidatePressedFocusedStates(this);
44bb185bdd57fcdb2c8ff9eee00347b116bab7db23Winson Chung    }
45bb185bdd57fcdb2c8ff9eee00347b116bab7db23Winson Chung
467d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    @Override
477d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    protected void onDraw(Canvas canvas) {
487d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        super.onDraw(canvas);
497d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung
507d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        // One time call to generate the pressed/focused state -- must be called after
517d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        // measure/layout
527d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung        mHolographicHelper.generatePressedFocusedStates(this);
537d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung    }
547d3810d8337e4f030796b566a2d562fcf79b0a22Winson Chung}
55