1d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes/* 2d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * Copyright 2015 The Android Open Source Project 3d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * 4d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 5d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * you may not use this file except in compliance with the License. 6d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * You may obtain a copy of the License at 7d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * 8d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 9d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * 10d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * Unless required by applicable law or agreed to in writing, software 11d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 12d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * See the License for the specific language governing permissions and 14d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * limitations under the License. 15d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes */ 16d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 17d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banespackage com.example.android.supportv4.graphics; 18d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 19d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport com.example.android.supportv4.R; 20d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 21d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.app.Activity; 22d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.graphics.Color; 23d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.graphics.drawable.Drawable; 24d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.os.Bundle; 25d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.support.v4.content.ContextCompat; 26d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.support.v4.graphics.drawable.DrawableCompat; 27d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.widget.ImageView; 28d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banesimport android.widget.RadioGroup; 29d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 30d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes/** 31d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes * Demonstrates use of a {@link DrawableCompat}'s ability to become circular. 32d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes */ 33d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banespublic class DrawableCompatActivity extends Activity { 34d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 35d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes private static final int IMAGE_RES = R.drawable.ic_favorite; 36d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 37d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes private ImageView mImageView; 38d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes private Drawable mDrawable; 39d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 40d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes @Override 41d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes protected void onCreate(Bundle savedInstanceState) { 42d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes super.onCreate(savedInstanceState); 43d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes setContentView(R.layout.drawable_compat); 44d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 45d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes mImageView = (ImageView) findViewById(R.id.image); 46d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 47d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes Drawable d = ContextCompat.getDrawable(this, IMAGE_RES); 48d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes mDrawable = DrawableCompat.wrap(d.mutate()); 49d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 50d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes mImageView.setImageDrawable(mDrawable); 51d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 52d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes RadioGroup rg = (RadioGroup) findViewById(R.id.drawable_compat_options); 53d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 54d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes @Override 55d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes public void onCheckedChanged(RadioGroup radioGroup, int id) { 56d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes switch (id) { 57d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes case R.id.drawable_compat_no_tint: 58d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes clearTint(); 59d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes break; 60d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes case R.id.drawable_compat_color: 61d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes setColorTint(); 62d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes break; 63d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes case R.id.drawable_compat_state_list: 64d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes setColorStateListTint(); 65d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes break; 66d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes } 67d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes } 68d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes }); 69d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes } 70d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 71d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes private void clearTint() { 72d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes DrawableCompat.setTintList(mDrawable, null); 73d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes } 74d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 75d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes private void setColorTint() { 76d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes DrawableCompat.setTint(mDrawable, Color.MAGENTA); 77d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes } 78d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 79d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes private void setColorStateListTint() { 80d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes DrawableCompat.setTintList(mDrawable, 81d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes ContextCompat.getColorStateList(this, R.color.tint_state_list)); 82d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes } 83d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes 84d099e43be5d8bf4af0cfb548724b9e5b34fe6091Chris Banes} 85