我试图在Android API 23上将图像设置为我的CircleImageView。我从设备的内存中获取图像路径并将此字符串路径存储到数据库:
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/fragment_edit_picture"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center"
android:layout_margin="5dp"
android:src="@mipmap/ic_launcher"
android:onClick="selectFromGallery"
app:civ_border_width="2dp"
/>
它正在使用API 19及之前,但它没有使用Android版API 23在Genymotion中的虚拟设备上运行。所选图像未显示在ImageView中。我以这种方式将图像设置为ImageView:
mCurrentImagePath = FileUtils.getPath(getActivity(), selectedImageUri);
Log.d(TAG, "mCurrentImagePath: " + mCurrentImagePath);
// Update client's picture
if (mCurrentImagePath != null && !mCurrentImagePath.isEmpty()) {
fragmentEditPicture.setImageDrawable(new BitmapDrawable(getResources(),
FileUtils.getResizedBitmap(mCurrentImagePath, 512, 512)));
}
图片路径为mCurrentImagePath: /storage/emulated/0/Download/56836_(5-27-2006 2-28-40)(1920x1200).JPG
。
你知道为什么这不起作用吗?
答案 0 :(得分:1)
使用 FileUtils.getResizedBitmap()的方法存在问题。我创建了一个示例项目来重现您的问题。它在该示例项目中运行良好。使用下面的代码段时,从设备的内存中加载图像时不应该出现问题。
public class Temperature {
private double temp;
private String scale;
public Temperature(double temp) {
this.temp = temp;
}
public String toString () {
return "your temp is " + this.temp;
}
public double getTemp() {
return this.temp;
}
public String getScale(String scale) {
this.scale = scale;
return this.scale;
}
public double conversion() {
double temp = 0;
if (this.scale == "fahrenheit") {
temp = (this.temp - 32) * (double)(5/9);
}
else if (this.scale == "celsius") {
temp = (this.temp * (double)(9/5)) + 32;
}
return temp;
}
public boolean aboveBoiling(double temp) {
if (this.scale == "fahrenheit") {
return temp >= 212;
}
else if (this.scale == "celsius") {
return temp >= 100;
}
return true;
}