1/*
2 * Copyright (C) 2014 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
17package com.android.fmradio.views;
18
19import android.content.Context;
20import android.os.Parcelable;
21import android.util.AttributeSet;
22import android.view.MotionEvent;
23import android.widget.ScrollView;
24
25/**
26 * A {@link ScrollView} that doesn't respond or intercept touch events.
27 * This is used in combination with {@link com.android.FmScroller.widget.MultiShrinkScroller}
28 * so that MultiShrinkScroller can handle all scrolling & saving.
29 */
30public class FmTouchlessScrollView extends ScrollView {
31
32    /**
33     * Constructor method
34     *
35     * @param context The context instance
36     */
37    public FmTouchlessScrollView(Context context) {
38        this(context, null);
39    }
40
41    /**
42     * Constructor method
43     *
44     * @param context The context instance
45     * @param attrs The attribute set for this view
46     */
47    public FmTouchlessScrollView(Context context, AttributeSet attrs) {
48        this(context, attrs, 0);
49    }
50
51    /**
52     * Constructor method
53     *
54     * @param context The context instance
55     * @param attrs The attribute set for this view
56     * @param defStyleAttr The default style for this view
57     */
58    public FmTouchlessScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
59        super(context, attrs, defStyleAttr);
60    }
61
62    @Override
63    protected Parcelable onSaveInstanceState() {
64        // Do not save the current scroll position. Always store scrollY=0 and delegate
65        // responsibility of saving state to the MultiShrinkScroller.
66        final int scrollY = getScrollY();
67        setScrollY(0);
68        final Parcelable returnValue = super.onSaveInstanceState();
69        setScrollY(scrollY);
70        return returnValue;
71    }
72
73    /**
74     * {@inheritDoc}
75     */
76    @Override
77    public boolean onInterceptTouchEvent(MotionEvent ev) {
78        return false;
79    }
80
81    /**
82     * {@inheritDoc}
83     */
84    @Override
85    public boolean onTouchEvent(MotionEvent event) {
86        return false;
87    }
88}
89