【发布时间】:2017-08-29 11:19:18
【问题描述】:
我有一个 AsyncTask 从 url 加载位图并使用 Palette 更改浮动操作按钮的背景。对于大多数图像,它可以正常工作,但在某些图像上,它会使按钮透明。屏幕截图 1 显示按钮颜色与图像中的蓝色一起使用,但在屏幕截图 2 中,按钮的颜色是透明的(即使图像不包含任何透明像素,因为它是 jpeg)。
public class ColoredFabTask extends AsyncTask<String , String , String> {
Context mContext;
View view;
private View rootView;
URL myFileUrl;
Bitmap imageBitmap = null;
public ColoredFabTask(Context context, View view) {
this.mContext = context;
this.view = view;
}
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... args) {
try {
myFileUrl = new URL(args[0]);
HttpURLConnection conn = (HttpURLConnection)
myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
imageBitmap = BitmapFactory.decodeStream(is);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String args) {
Palette palette = Palette.from(imageBitmap).generate();
int vibrant = palette.getVibrantColor(0);
FloatingActionButton applyButton = (FloatingActionButton) view.findViewById(R.id.applyButton);
applyButton.setBackgroundTintList(ColorStateList.valueOf(vibrant));
applyButton.setVisibility(View.VISIBLE);
}
}
截图:
【问题讨论】:
标签: android android-asynctask palette