package com.fastaccess.ui.widgets; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Color; import android.support.annotation.AttrRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StyleRes; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.Toast; import com.fastaccess.R; import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.PrefGetter; import com.fastaccess.ui.modules.user.UserPagerActivity; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnLongClick; import cn.gavinliu.android.lib.shapedimageview.ShapedImageView; /** * Created by Kosh on 14 Nov 2016, 7:59 PM */ public class AvatarLayout extends FrameLayout implements ImageLoadingListener { @BindView(R.id.avatar) ShapedImageView avatar; @Nullable private String login; private boolean isOrg; private Toast toast; @OnClick(R.id.avatar) void onClick(@NonNull View view) { if (InputHelper.isEmpty(login)) return; UserPagerActivity.startActivity(view.getContext(), login, isOrg); } @OnLongClick(R.id.avatar) boolean onLongClick(@NonNull View view) { if (InputHelper.isEmpty(login)) return false; if (toast != null) toast.cancel(); toast = Toast.makeText(getContext(), view.getContentDescription(), Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); return true; } public AvatarLayout(@NonNull Context context) { super(context); } public AvatarLayout(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public AvatarLayout(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { super(context, attrs, defStyleAttr); } public AvatarLayout(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); } @Override protected void onFinishInflate() { super.onFinishInflate(); inflate(getContext(), R.layout.avatar_layout, this); if (isInEditMode()) return; ButterKnife.bind(this); if (PrefGetter.isRectAvatar()) { avatar.setShape(ShapedImageView.SHAPE_MODE_ROUND_RECT, 15); } } @Override public void onLoadingStarted(String imageUri, View view) { setBackground(false); } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { setBackground(true); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { setBackground(true); } @Override public void onLoadingCancelled(String imageUri, View view) {} public void setUrl(@Nullable String url, @Nullable String login) { setUrl(url, login, false); } public void setUrl(@Nullable String url, @Nullable String login, boolean isOrg) { this.login = login; this.isOrg = isOrg; avatar.setContentDescription(login); if (url != null) { ImageLoader.getInstance().displayImage(url, avatar, this); } else { ImageLoader.getInstance().displayImage(null, avatar); avatar.setImageResource(R.drawable.ic_github_dark); } } private void setBackground(boolean clear) { if (clear) { setBackgroundColor(Color.TRANSPARENT); } else { if (PrefGetter.isRectAvatar()) { setBackgroundResource(R.drawable.rect_shape); } else { setBackgroundResource(R.drawable.circle_shape); } } } }