我正在后台获取一些数据以进行缓存,以便我的提要始终更新,但是我遇到了图像问题。现在图像不会缓存,除非它们已经加载到图像视图中。我想知道是否有办法在后台加载/缓存图像?
我正在使用 Glide 或 Picasso 来加载图像
Glide.with(context).load(POST_IMAGE).placeholder(R.drawable.loading_img).error(R.drawable.bg_480_800).into(image);
Run Code Online (Sandbox Code Playgroud)
Picasso.with(context).load("image url").error(R.drawable.bg_480_800).placeholder(R.drawable.loading_img).into(holder.imageURL);
Run Code Online (Sandbox Code Playgroud)
在这两个中,我使用图像作为可绘制文件夹中的占位符。现在我想在占位符内使用文本而不是可绘制文件夹中的图像。
所以,请帮我加载文本而不是从 drawable 文件夹加载图像
我正在阅读 s3 android 指南,并且对如何下载我的文件感到非常困惑。
他们提供以下代码:
TransferObserver observer = transferUtility.download(
MY_BUCKET, /* The bucket to download from */
OBJECT_KEY, /* The key for the object to download */
MY_FILE /* The file to download the object to */
);
Run Code Online (Sandbox Code Playgroud)
那么什么是 MY_FILE?我是否想创建一个本地空文件对象并将其提供给该 transferUtility 下载函数,并将该空文件填充到一次下载中?
而且,当我完成获取文件时,(尤其是图像)我如何使用 glide 或 Picasso 将该文件上传到 imageView 中?
我不确定如何使用 TransferObserver 对象。
希望有人可以提供一个工作示例,请!
干杯!
我正在尝试使用 Glide 加载图像:
case "image":
Log.d("TRecyViewAdapter", "Got Image");
ImageView imageView = new ImageView(context);
imageView.setLayoutParams(new GridLayoutManager.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT
));
contents.addView(imageView);
Glide.with(context).load(part.getContent()).into(imageView);
break;
Run Code Online (Sandbox Code Playgroud)
它什么都不显示。
但是,如果我将最后一行更改为毕加索:
Picasso.with(context).load(part.getContent()).into(imageView);
Run Code Online (Sandbox Code Playgroud)
正如我所期望的那样,图像以全尺寸加载。
还。如果我使用带有占位符的 Glide:
Glide.with(context).load(part.getContent()).placeholder(R.mipmap.def_avatar).into(imageView);
Run Code Online (Sandbox Code Playgroud)
它加载图像但尺寸非常小(R.mipmap.def_avatar 的大小)
我希望能够加载实际大小的图像而不必指定占位符(它是一个动态视图,它应该显示许多不同大小的不同图像等等)
我想使用 Glide 而不是 Picasso 因为我想要支持动画 gif。
我正在使用毕加索从 url 加载图像。由于我需要位图进行进一步处理,因此我使用 Target() 类来保存位图。但是 picasso 没有在第一次运行时加载图像。但是当我去另一个活动并回到毕加索实施的活动时它会加载。为什么会这样?任何修复?我的代码在下面,
Picasso.with(getActivity()).load(card.getExtras().getImageUrl()).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Date now = new Date();
filename ="certificate_"+ formatter.format(now) + ".png";
File path=null;
if (getActivity().getExternalCacheDir()==null) {
path=getActivity().getCacheDir();
}
if(getActivity().getExternalCacheDir()!=null){
path=getActivity().getExternalCacheDir();
}
File image=new File(path+filename);
FileOutputStream fileOutPutStream = null;
try {
fileOutPutStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fileOutPutStream);
fileOutPutStream.flush();
fileOutPutStream.close();
Log.d("---REACHED","FILE SAVED--------------");
} catch (Exception e) {
Crashlytics.logException(e);
}
Run Code Online (Sandbox Code Playgroud) 我已经尝试过使缓存无效。清洁构建和重建项目也完成了。但我仍然不断收到未解决的参考资料:我正在使用毕加索图书馆,而我的其他活动工作正常。Picasso 库已在 gradle 中实现。语言版本为1.2 Android Studio
代码:
import android.app.Activity
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import chatonapp.project.com.chatonapp.R
import com.google.android.gms.tasks.Task
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.database.*
import com.google.firebase.storage.FirebaseStorage
import com.google.firebase.storage.StorageReference
import com.google.firebase.storage.UploadTask
import com.squareup.picasso.Picasso
import com.theartofdev.edmodo.cropper.CropImage
import id.zelory.compressor.Compressor
import kotlinx.android.synthetic.main.activity_settings.*
import java.io.ByteArrayOutputStream
import java.io.File
class SettingsActivity : AppCompatActivity() {
var mDatabase: DatabaseReference? = null
var mCurrentUser: FirebaseUser? = null
var mStorageRef: StorageReference? = null
var GALLERY_ID: Int = 1
override fun onCreate(savedInstanceState: Bundle?) …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Firabase 数据库上传和下载图像,该数据库具有指向 Firebase 存储的 URL 链接。问题是奇怪的 URL 被保存到数据库中(请参阅底部的链接)。我应该如何获取一个正常的 URL,以便将图像下载到我的 Android 应用程序中?先感谢您!
这里我发布一些我使用的代码:
上传到 Firebase 数据库和存储:
mStorageRef = FirebaseStorage.getInstance().getReference();
mDataBaseRef = FirebaseDatabase.getInstance().getReference();
if (mImageUri != null)
{
final StorageReference fileReference = mStorageRef.child(nameimage + "." + getFileExtension(mImageUri));
fileReference.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(AddAdvertisement.this, "Upload successful!", Toast.LENGTH_LONG).show();
Upload upload = new Upload(et_localization, taskSnapshot.getUploadSessionUri().toString());
String uploadId = mDataBaseRef.push().getKey();
mDataBaseRef.child(uploadId).setValue(upload);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(AddAdvertisement.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
并从 Firebase 下载:
databaseReference …Run Code Online (Sandbox Code Playgroud) android firebase picasso firebase-realtime-database firebase-storage
我想从带有 picasso android 库的 URL 加载图像并将其显示以查看,但仅在 android 7.0 Nougat 中出现错误。
图像的 URL 使用 HTTPS。在我的另一个具有相同图像 URL 的项目中,如果我在真实设备 7.0 牛轧糖中运行,我没有收到错误,但如果我在模拟器 7.0 牛轧糖中运行,它仍然会出错。
我尝试了来自不同域的其他 URL 图像,但我也没有收到错误消息。
我如何解决它?
Picasso.get().load("My_URL_Image")
.resize(200,200)
.centerInside()
.placeholder(R.drawable.ic_default)
.error(R.drawable.ic_default)
.into(holder.imageView, object : Callback{
override fun onSuccess() {}
override fun onError(e: Exception?) {
e?.printStackTrace()
}
})
Run Code Online (Sandbox Code Playgroud)
W/System.err: com.squareup.picasso.NetworkRequestHandler$ResponseException: HTTP 504
W/System.err: at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:51)
W/System.err: at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:219)
W/System.err: at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:175)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:354)
Run Code Online (Sandbox Code Playgroud) 我是Android开发的新手,正在尝试使用Picasso从URL加载图像,但是当我导航至Picasso加载活动时,该操作失败。
以下是我用于的代码:
//Declaring Variable
ImageView ImageView1 = (ImageView)findViewById(R.id.forthImage);
Context context = this;
//In onCreate()
Picasso.with(context).load("http://postimg.org/image/wjidfl5pd/").into(ImageView1);
Run Code Online (Sandbox Code Playgroud)
在我的XML中:
<ImageView
android:id="@+id/forthImage"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/thirdImage"
/>
Run Code Online (Sandbox Code Playgroud)
还有我的猫
09-02 09:11:39.632: E/AndroidRuntime(8680): FATAL EXCEPTION: main
09-02 09:11:39.632: E/AndroidRuntime(8680): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.toppan.toppan_android_v1/com.toppan.toppan_android_v1.Animation_Run}: java.lang.NullPointerException
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151)
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286)
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.app.ActivityThread.access$600(ActivityThread.java:144)
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259)
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.os.Handler.dispatchMessage(Handler.java:99)
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.os.Looper.loop(Looper.java:137)
09-02 09:11:39.632: E/AndroidRuntime(8680): at android.app.ActivityThread.main(ActivityThread.java:5166)
09-02 09:11:39.632: E/AndroidRuntime(8680): at java.lang.reflect.Method.invokeNative(Native …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用Picasso将图像从URL加载到图像视图中.我想执行一个操作,但只有在图像到达时才执行,而不是在加载占位符可见时.
我该如何实现这一目标?
谢谢!