大佬教程收集整理的这篇文章主要介绍了如何在Android上将Google云端硬盘与Picasso集成?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public static Bitmap getBitmap(DrivEID id) { GoogleApiClient client = ApiClientAsyncTask.createConnectedClient(App.getAppContext()); DriveFile file = Drive.DriveApi.getFile(client,id); Metadata Meta = sync(file.getMetadata(client)); Contents contents = sync(file.openContents(client,DriveFile.MODE_READ_ONLY,null)); InputStream imageStream = contents.geTinputStream(); try { return BitmapFactory.decodeStream(imageStream); } finally { IOTools.ignorantClose(imageStream); sync(file.discardContents(client,contents)); } }
在ConnectionCallBACks.onConnected中:
Glide.get(getContext()).register(DrivEID.class,InputStream.class,new DrivEIDR_864_11845@odelLoader.Factory(mClient));
在ConnectionCallBACks.onConnectionSuspended中:
Glide.get(getContext()).unregister(DrivEID.class,InputStream.class);
在列表适配器:
String driveString = cursor.getString(cursor.getcolumnIndex("image")); DrivEID drivEID = DrivEID.decodeFromString(driveString); Glide.with(this) .from(DrivEID.class) .load(drivEID) .into(imageView);
滑胶:
import java.io.*; import android.content.Context; import android.net.Uri; import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.model.*; import com.bumptech.glide.load.model.stream.StreAMModelLoader; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.drive.DrivEID; public class DrivEIDR_864_11845@odelLoader implements StreAMModelLoader<DrivEID> { private final GoogleApiClient client; public DrivEIDR_864_11845@odelLoader(GoogleApiClient client) { this.CLIENt = client; } public DataFetcher<InputStream> getresourceFetcher(DrivEID model,int width,int height) { return new DrivEIDDataFetcher(client,model); } public static class Factory implements ModelLoaderFactory<DrivEID,InputStream> { private final GoogleApiClient client; public Factory(GoogleApiClient client) { this.CLIENt = client; } public ModelLoader<DrivEID,InputStream> build(Context context,GenericLoaderFactory factories) { return new DrivEIDR_864_11845@odelLoader(client); } public void teardown() { client.disconnect(); } } }
驱动相关的Glide逻辑:
import java.io.InputStream; import org.slf4j.*; import com.bumptech.glide.Priority; import com.bumptech.glide.load.data.DataFetcher; import com.google.android.gms.common.api.*; import com.google.android.gms.drive.*; public class DrivEIDDataFetcher implements DataFetcher<InputStream> { private static final Logger LOG = LoggerFactory.getLogger(DrivEIDDataFetcher.class); private final GoogleApiClient client; private final DrivEID drivEID; private Boolean cancelled = false; private DriveFile file; private Contents contents; public DrivEIDDataFetcher(GoogleApiClient client,DrivEID drivEID) { this.CLIENt = client; this.drivEID = drivEID; } public String getId() { return driveId.encodeToString(); } public InputStream loadData(Priority priority) { if (cancelled) return null; if (client == null) { LOG.warn("No connected client received,giving custom error image"); return null; } file = Drive.DriveApi.getFile(client,drivEID); if (cancelled) return null; contents = sync(file.openContents(client,null)).getContents(); if (cancelled) return null; return contents.geTinputStream(); } public void cancel() { cancelled = true; if (contents != null) { file.discardContents(client,contents); } } public void cleanup() { if (contents != null) { sync(file.discardContents(client,contents)); } } private static <T extends Result> void assertsuccess(T result) { if (!result.getStatus().issuccess()) { throw new IllegalStateException(result.getStatus().toString()); } } private static <T extends Result> T sync(PendingResult<T> pending) { T result = pending.await(); assertsuccess(result); return result; } }
以上是大佬教程为你收集整理的如何在Android上将Google云端硬盘与Picasso集成?全部内容,希望文章能够帮你解决如何在Android上将Google云端硬盘与Picasso集成?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。