17ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes/*
27ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * Copyright (C) 2016 The Android Open Source Project
37ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes *
47ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
57ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * you may not use this file except in compliance with the License.
67ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * You may obtain a copy of the License at
77ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes *
87ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
97ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes *
107ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * Unless required by applicable law or agreed to in writing, software
117ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
127ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * See the License for the specific language governing permissions and
147ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * limitations under the License.
157ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes */
167ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.appcompat.custom;
187ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
197ddd1ffee15f045e17a1da78808be97b64772e4bChris Banesimport android.content.Context;
207ddd1ffee15f045e17a1da78808be97b64772e4bChris Banesimport android.content.ContextWrapper;
217ddd1ffee15f045e17a1da78808be97b64772e4bChris Banesimport android.content.res.Resources;
227ddd1ffee15f045e17a1da78808be97b64772e4bChris Banesimport android.util.AttributeSet;
237ddd1ffee15f045e17a1da78808be97b64772e4bChris Banesimport android.widget.FrameLayout;
247ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
257ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes/**
267ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes * An AppCompatImageView which manually wraps its Context
277ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes */
287ddd1ffee15f045e17a1da78808be97b64772e4bChris Banespublic class ContextWrapperFrameLayout extends FrameLayout {
297ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
307ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    public ContextWrapperFrameLayout(Context context) {
317ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        super(new CustomContextWrapper(context));
327ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    }
337ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
347ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    public ContextWrapperFrameLayout(Context context, AttributeSet attrs) {
357ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        super(new CustomContextWrapper(context), attrs);
367ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    }
377ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
387ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    public static class CustomContextWrapper extends ContextWrapper {
397ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        private final Resources mResources;
407ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
417ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        public CustomContextWrapper(Context base) {
427ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes            super(base);
437ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes            mResources = new CustomResources(base.getResources());
447ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        }
457ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
467ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        @Override
477ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        public Resources getResources() {
487ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes            return mResources;
497ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        }
507ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    }
517ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes
527ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    public static class CustomResources extends Resources {
537ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        public CustomResources(Resources res) {
547ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes            super(res.getAssets(), res.getDisplayMetrics(), res.getConfiguration());
557ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes        }
567ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes    }
577ddd1ffee15f045e17a1da78808be97b64772e4bChris Banes}
58