blob: 60bf266ef100505b7e8491dd889bc4293cad2ddc [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.explore_sites;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.util.ViewUtils;
import org.chromium.chrome.browser.widget.RoundedIconGenerator;
/**
* The View representing a single explore sites category.
* Consists of a large image icon over descriptive text.
*/
public class ExperimentalExploreSitesCategoryTileView extends LinearLayout {
/** The data represented by this tile. */
private ExploreSitesCategoryTile mCategoryData;
private Resources mResources;
private RoundedIconGenerator mIconGenerator;
private TextView mTitleView;
private ImageView mIconView;
private int mIconWidthPx;
private int mIconHeightPx;
/** Constructor for inflating from XML. */
public ExperimentalExploreSitesCategoryTileView(Context context, AttributeSet attrs) {
super(context, attrs);
mResources = context.getResources();
}
@Override
public void onFinishInflate() {
super.onFinishInflate();
mTitleView = findViewById(R.id.explore_sites_category_tile_title);
mIconView = findViewById(R.id.explore_sites_category_tile_icon);
}
public void initialize(ExploreSitesCategoryTile category, int widthPx) {
mCategoryData = category;
mIconWidthPx =
widthPx - (2 * mResources.getDimensionPixelSize(R.dimen.explore_sites_padding));
mIconHeightPx = mIconWidthPx * 2 / 3;
mIconGenerator = new RoundedIconGenerator(mIconWidthPx, mIconHeightPx,
mResources.getDimensionPixelSize(R.dimen.explore_sites_radius),
ApiCompatibilityUtils.getColor(
mResources, R.color.default_favicon_background_color),
mResources.getDimensionPixelSize(R.dimen.headline_size_medium));
updateIcon(null);
mTitleView.setText(mCategoryData.getCategoryName());
}
public void updateIcon(Bitmap bitmap) {
Drawable drawable;
if (bitmap == null) {
drawable = new BitmapDrawable(mResources,
mIconGenerator.generateIconForText(mCategoryData.getCategoryName()));
} else {
drawable = ViewUtils.createRoundedBitmapDrawable(
Bitmap.createScaledBitmap(bitmap, mIconWidthPx, mIconHeightPx, false),
mResources.getDimensionPixelSize(R.dimen.explore_sites_radius));
}
mCategoryData.setIconDrawable(drawable);
mIconView.setImageDrawable(drawable);
}
}