我想要HomeActivity页面中的滑块。我的滑块使用Timer()代码。而且我使用ViewPager。当我放置不在数据库中的图像链接并且未使用firebase-storage创建链接时,它的加载速度非常快。但是,将图片上传到firebase-storage之后,从firebase-storage拍摄图片时,大约需要4-5秒钟才能非常缓慢地加载它。我只想知道为什么或是否有解决方案?拜托,我很乐意提供帮助。
HomeActivity.java 请检查slider()函数。我要自动将滑块在Firebase数据库中加载照片。
package com.example.hassucuk;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.support.v4.view.GravityCompat;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.MenuItem;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.hassucuk.Model.slider;
import com.example.hassucuk.Model.urunler;
import com.example.hassucuk.ViewHolder.urunlerViewHolder;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import io.paperdb.Paper;
public class HomeActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private DatabaseReference sliderRootRef,urunlerRootRef;
private RecyclerView ryclerviewurunler;
RecyclerView.LayoutManager layoutManager;
private TextView urunlerimiztxt;
private int page=0;
int dotsCount=0;
private String[] imageUrls = new String[]{};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
urunlerRootRef = FirebaseDatabase.getInstance().getReference().child("Urunler");
ryclerviewurunler = findViewById(R.id.urunler_recyclerview);
ryclerviewurunler.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
ryclerviewurunler.setLayoutManager(layoutManager);
urunlerimiztxt= (TextView) findViewById(R.id.urunlerimiztxt);
sliderRootRef = FirebaseDatabase.getInstance().getReference().child("Sliderlar");
sliderRootRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ArrayList<String> list=new ArrayList<String>();//Creating arraylist
ArrayList<String> sliderresimurlim=new ArrayList<String>();//Creating arraylist
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name =ds.getKey();
list.add(name);
}
for (int i=0;i<list.size();i++)
{
slider sliderlar = dataSnapshot.child(list.get(i)).getValue(slider.class);
sliderresimurlim.add(sliderlar.getImage());
}
String[] imageUrls = sliderresimurlim.toArray(new String[sliderresimurlim.size()]);
sliderr(imageUrls);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
FirebaseRecyclerOptions<urunler> options = new FirebaseRecyclerOptions.Builder<urunler>()
.setQuery(urunlerRootRef,urunler.class)
.build();
FirebaseRecyclerAdapter<urunler, urunlerViewHolder> adapter =
new FirebaseRecyclerAdapter<urunler, urunlerViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull urunlerViewHolder holder, int position, @NonNull urunler model) {
Picasso.get().load(model.getResim()).into(holder.urunresmi);
holder.urunadi.setText(model.getAd());
holder.urunfiyati.setText(model.getFiyat());
holder.urunkilomiktari.setText(model.getFiyat());
}
@NonNull
@Override
public urunlerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_product_cart,parent,false);
urunlerViewHolder holder = new urunlerViewHolder(view);
return holder;
}//xml dosyasını java koduna dönüştürüyor ve o xml görünümünü döndürüyor.
};
ryclerviewurunler.setAdapter(adapter);
adapter.startListening();
}
public void sliderr(final String[] imageUrls) {
final ViewPager viewPager = findViewById(R.id.view_pager);
ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageUrls);
viewPager.setAdapter(adapter);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (viewPager.getCurrentItem() == 4) {
page = 0;
}
viewPager.setCurrentItem(page, true);
page++;
}
});
}
}, 100, 3000);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_sepetim) {
// Handle the camera action
} else if (id == R.id.nav_siparisgecmisim) {
} else if (id == R.id.nav_hesapayarlari) {
} else if (id == R.id.nav_cikis) {
Paper.book().destroy();
Intent intent= new Intent(HomeActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
protected void onStart() {
super.onStart();
}
}
String [] =>我使用此数组存储图像。 slide.java(构造函数,我从firebase数据库获取值)
package com.example.hassucuk.Model;
public class slider {
private String sliderid,image;
public slider(){
}
public slider(String sliderid, String image) {
this.sliderid = sliderid;
this.image = image;
}
public String getSliderid() {
return sliderid;
}
public void setSliderid(String sliderid) {
this.sliderid = sliderid;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
我的json文件
{
"Sliderlar" : {
"Haz 17, 201903:36:46" : {
"image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A161Haz%2017%2C%20201903%3A36%3A46.jpg?alt=media&token=42ad47df-a361-4247-9263-9a3b86758c64",
"sliderid" : "Haz 17, 201903:36:46"
},
"Haz 17, 201903:37:14" : {
"image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A166Haz%2017%2C%20201903%3A37%3A14.jpg?alt=media&token=e47449e0-a1c5-4870-9101-0936265c9cfb",
"sliderid" : "Haz 17, 201903:37:14"
},
"Haz 17, 201903:37:47" : {
"image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A164Haz%2017%2C%20201903%3A37%3A47.jpg?alt=media&token=9f681f32-dad3-44c8-a819-e5af02c08605",
"sliderid" : "Haz 17, 201903:37:47"
},
"Haz 17, 201903:37:59" : {
"image" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Slider%20Resimleri%2Fimage%3A165Haz%2017%2C%20201903%3A37%3A59.jpg?alt=media&token=4dbd866c-0aa4-4673-84cd-dac5f81e4f6f",
"sliderid" : "Haz 17, 201903:37:59"
}
},
"Urunler" : {
"Haz 16, 201914:11:19" : {
"aciklama" : "Acılı Fermente Parmak ",
"ad" : "Acılı Fermente Parmak Sucuk",
"fiyat" : "53",
"resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A151Haz%2016%2C%20201914%3A11%3A19.jpg?alt=media&token=f3983562-6a71-414f-9eb7-413991d23a63",
"saat" : "14:11:19",
"tarih" : "Haz 16, 2019",
"urunid" : "Haz 16, 201914:11:19"
},
"Haz 16, 201914:12:43" : {
"aciklama" : "Acılı Parmak",
"ad" : "Acılı Parmak Sucuk",
"fiyat" : "53",
"resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A152Haz%2016%2C%20201914%3A12%3A43.jpg?alt=media&token=fe196025-cab7-4e87-919d-2ce43f23c2e8",
"saat" : "14:12:43",
"tarih" : "Haz 16, 2019",
"urunid" : "Haz 16, 201914:12:43"
},
"Haz 16, 201915:16:59" : {
"aciklama" : "Acısız Fermente Kangal",
"ad" : "Acısız Fermente Kangal Sucuk",
"fiyat" : "53",
"resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A153Haz%2016%2C%20201915%3A16%3A59.jpg?alt=media&token=39d3a104-8c80-4831-b578-c1804450a32f",
"saat" : "15:16:59",
"tarih" : "Haz 16, 2019",
"urunid" : "Haz 16, 201915:16:59"
},
"Haz 16, 201915:17:55" : {
"aciklama" : "Acısız Kangal",
"ad" : "Acısız Kangal Sucuk",
"fiyat" : "53",
"resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A154Haz%2016%2C%20201915%3A17%3A55.jpg?alt=media&token=24a41db6-d25b-480d-ba86-a4bb1fca6983",
"saat" : "15:17:55",
"tarih" : "Haz 16, 2019",
"urunid" : "Haz 16, 201915:17:55"
},
"Haz 16, 201915:18:49" : {
"aciklama" : "Acılı Baton",
"ad" : "Acılı Baton Sucuk",
"fiyat" : "53",
"resim" : "https://firebasestorage.googleapis.com/v0/b/has-sucuk.appspot.com/o/Urun%20resimleri%2Fimage%3A155Haz%2016%2C%20201915%3A18%3A49.jpg?alt=media&token=17cd8c5e-1bd2-4118-947a-32d8135fc3a0",
"saat" : "15:18:49",
"tarih" : "Haz 16, 2019",
"urunid" : "Haz 16, 201915:18:49"
}
},
"Users" : {
"05531530440" : {
"loginpassword" : "123456",
"loginphone" : "05531530440",
"name" : "Fatih İnci",
"role" : "admin"
},
"05531530450" : {
"loginpassword" : "123456",
"loginphone" : "05531530450",
"name" : "deneme 1",
"role" : "user"
}
}
}