1
我製作了一個應用程序,它從Firebase存儲中檢索圖像。圖像被檢索並顯示在圖像視圖中,但它需要2分鐘以上才能檢索圖像。我已經按照以下鏈接檢索來自使用滑行庫的Firebase存儲的圖像。從Firebase存儲api檢索圖像
https://github.com/firebase/FirebaseUI-Android/tree/master/storage
這裏是我的代碼
MainActivity.java
package com.example.vikas.where_i_am;
import android.media.Image;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
public class MainActivity extends AppCompatActivity
{
private ImageView imageView;
private TextView mtext;
private StorageReference mstorage,filepath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(ImageView)findViewById(R.id.action_image);
mtext=(TextView)findViewById(R.id.text);
mstorage= FirebaseStorage.getInstance().getReference().child("Screenshot (129).png");
Glide.with(MainActivity.this)
.using(new FirebaseImageLoader())
.load(mstorage)
.fitCenter()
.centerCrop()
.into(imageView);
}
}
FirebaseImageLoader.java
package com.example.vikas.where_i_am;
/**
* Created by vikas on 5/4/17.
*/
import android.util.Log;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.data.DataFetcher;
import com.bumptech.glide.load.model.stream.StreamModelLoader;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.StreamDownloadTask;
import java.io.IOException;
import java.io.InputStream;
/**
* ModelLoader implementation to download images from FirebaseStorage with Glide.
*
* Sample Usage:
* <pre>
* StorageReference ref = FirebaseStorage.getInstance().getReference().child("myimage");
* ImageView iv = (ImageView) findViewById(R.id.my_image_view);
*
* Glide.with(this)
* .using(new FirebaseImageLoader())
* .load(ref)
* .into(iv);
* </pre>
*/
public class FirebaseImageLoader implements StreamModelLoader<StorageReference>
{
private static final String TAG = "FirebaseImageLoader";
@Override
public DataFetcher<InputStream> getResourceFetcher(StorageReference model, int width, int height) {
return new FirebaseStorageFetcher(model);
}
private class FirebaseStorageFetcher implements DataFetcher<InputStream> {
private StorageReference mRef;
private StreamDownloadTask mStreamTask;
private InputStream mInputStream;
FirebaseStorageFetcher(StorageReference ref) {
mRef = ref;
}
@Override
public InputStream loadData(Priority priority) throws Exception {
mStreamTask = mRef.getStream();
mInputStream = Tasks.await(mStreamTask).getStream();
return mInputStream;
}
@Override
public void cleanup() {
// Close stream if possible
if (mInputStream != null) {
try {
mInputStream.close();
mInputStream = null;
} catch (IOException e) {
Log.w(TAG, "Could not close stream", e);
}
}
}
@Override
public String getId() {
return mRef.getPath();
}
@Override
public void cancel() {
// Cancel task if possible
if (mStreamTask != null && mStreamTask.isInProgress()) {
mStreamTask.cancel();
}
}
}
}
XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.vikas.where_i_am.MainActivity"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_weight="0"/>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/action_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</ScrollView>
</LinearLayout>
任何人都可以幫助我,使圖像檢索更快。
發佈您的代碼,以便我們可以看看它嗎? –
我已經上傳了代碼請看看。 – Vikas