View Full Version : کند بودن گرید ویو
ho3ein.3ven
پنج شنبه 16 مرداد 1393, 16:46 عصر
سلام
دوستان من یه گرید ویو با baseadapter ساختم که حدود 200 آیتم داره (عکس و متن) .
با این گریدویو یه مشکل دارم . سرعتش یکم پایینه . وقتی که اسکرول می کنم جند ثانیه بعد اسکرول میشه .
از arrayadapter هم استفاده کردم ولی اررور داد چون تعداد آیتم هام بالاست البته حجم عکس هام پایینه ها.
کسی میتونه کمکم کنه ؟
harani
پنج شنبه 16 مرداد 1393, 17:17 عصر
خب طبیعی چرا که هر کدام از عکسات حجمی دارن و وقتی این صفحه باز میشه 200* حجم عکس میاد بالا یا bitmap factory option بطور جاوا یا خود دستی حجم عکساتو کم کن .
اینم مثال bitmap factory option که در یک متد استفاده شده .
private Bitmap setBigBitmap(int id) {
try {
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources( ), id, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 512;
// Find the correct scale value. It should be the power of 2.
int scale = 1;
while (o.outWidth / scale / 2 >= REQUIRED_SIZE
&& o.outHeight / scale / 2 >= REQUIRED_SIZE)
scale *= 2;
// Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory
.decodeResource(context.getResources(), id, o2);
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
بازم اگه جواب نداد باید از insample size همین option استفاده کنی .
ho3ein.3ven
پنج شنبه 16 مرداد 1393, 17:48 عصر
custom adapter من به این صورت هست :
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class CustomAdaptor extends BaseAdapter {
private Activity activity;
private ArrayList<Person> data;
private Person temp;
private static LayoutInflater inflater = null;
private static class ViewHolder{
public TextView tvName;
public ImageView ivPerson;
}
public CustomAdaptor(Activity act, ArrayList<Person> list) {
// TODO Auto-generated constructor stub
this.activity = act;
this.data = list;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (data != null)
return data.size();
else
return -1;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
ViewHolder holder;
if(convertView==null){
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
vi = inflater.inflate(R.layout.list_content_layout, null);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.tvName= (TextView) vi.findViewById(R.id.textView1);
holder.ivPerson =(ImageView)vi.findViewById(R.id.imageView1);
/************ Set holder with LayoutInflater ************/
vi.setTag( holder );
}
else
holder=(ViewHolder)vi.getTag();
if(data.size()<=0)
{
holder.tvName.setText("No Data");
}
else
{
/***** Get each Model object from Arraylist ********/
temp=null;
temp= ( Person) data.get(position);
/************ Set Model values in Holder elements ***********/
holder.tvName.setText(temp.getName());
holder.ivPerson.setImageResource(temp.getUrl());
/******** Set Item Click Listner for LayoutInflater for each row *******/
// vi.setOnClickListener(new OnItemClickListener( temp.getName() ));
}
return vi;
}
الان چطور می تونم از این تابع استفاده کنم ؟
akbar8298
پنج شنبه 16 مرداد 1393, 20:43 عصر
برای استفاده از gridview هایی که عکس های زیادی دارند باید عکسها رو بصورت lazy loading نمایش بدین.
کتابخانه Universal Image loader این کار رو بخوبی انجام میده. من حدود 400 عکس رو به این طریق توی گرید ویو بدون افت سرعت انجام دادم.
این هم لینک کتابخانه
https://github.com/nostra13/Android-Universal-Image-Loader
ho3ein.3ven
پنج شنبه 16 مرداد 1393, 22:26 عصر
تشکر از کمکتون
امکانش هست بیشتر برام توضیح بدین ؟
این سورسی که گذاشتین عکس ها رو از اینترنت می خونه . ولی عکس های من توی ریسورس قرار داره .
akbar8298
پنج شنبه 16 مرداد 1393, 23:06 عصر
تشکر از کمکتون
امکانش هست بیشتر برام توضیح بدین ؟
این سورسی که گذاشتین عکس ها رو از اینترنت می خونه . ولی عکس های من توی ریسورس قرار داره .
این سورس نه تنها از نت بلکه از assets , resource , sdcard, url , .... هم می خونه
String imageUri = "http://site.com/image.png"; // from Web
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
String imageUri = "content://media/external/audio/albumart/13"; // from content provider
String imageUri = "assets://image.png"; // from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
ho3ein.3ven
جمعه 17 مرداد 1393, 00:42 صبح
تشکر بابت پاسختون.
یه سوال دیگه . الان این پروژه توی اکلیپس import نمیشه ؟ چون هرکاریش کردم نشد .
shs1377
جمعه 17 مرداد 1393, 01:13 صبح
تشکر بابت پاسختون.
یه سوال دیگه . الان این پروژه توی اکلیپس import نمیشه ؟ چون هرکاریش کردم نشد .
با اجازه دوستمون
شما باید این فایل (https://github.com/nostra13/Android-Universal-Image-Loader/raw/master/downloads/universal-image-loader-1.9.2.jar) رو دانلود کنید و به پوشه libs پروژه انتقال بدید نیازی به ایمپورت نیست کل این کتابخانه درون این فایل جاوا هست
ho3ein.3ven
جمعه 17 مرداد 1393, 09:19 صبح
خب بعدش باید چیکار کنم ؟ این کتابخونه رو اضافه کردم .
shs1377
جمعه 17 مرداد 1393, 12:37 عصر
خب بعدش باید چیکار کنم ؟ این کتابخونه رو اضافه کردم .
توی سمپل نحوه استفاده ازش هست در گرید ویو ، گالری ، لیست ویو و... استفاده کرده در ضمن یک پیشنهاد دیگه هم بهتون دارم میتونین مثلا همه ی عکس ها رو توی یک گرید ویو نشون ندید مثلا چهار بخش مجموعه عکس 1 ، مجموعه عکس 2 و... اینجوری سرعتش خوب میشه البته این فقط یک پیشنهاده
ho3ein.3ven
جمعه 17 مرداد 1393, 13:53 عصر
توی سمپل نحوه استفاده ازش هست در گرید ویو ، گالری ، لیست ویو و... استفاده کرده در ضمن یک پیشنهاد دیگه هم بهتون دارم میتونین مثلا همه ی عکس ها رو توی یک گرید ویو نشون ندید مثلا چهار بخش مجموعه عکس 1 ، مجموعه عکس 2 و... اینجوری سرعتش خوب میشه البته این فقط یک پیشنهاده
دوست عزیزی ممنون از لطفتون
ولی همونجور که گفتم پروژه اصلا import نمیشه که بخوام روش کارش رو ببینم . شما پروژه ای که روی اکلیپس import بشه رو ندارین ؟
shs1377
جمعه 17 مرداد 1393, 18:25 عصر
دوست عزیزی ممنون از لطفتون
ولی همونجور که گفتم پروژه اصلا import نمیشه که بخوام روش کارش رو ببینم . شما پروژه ای که روی اکلیپس import بشه رو ندارین ؟
خواهش میکنم
شما تازه کارید یا نه ؟ کلا قبلا ایمپورت میکردید؟؟ اکلیپستون چیه؟؟
ho3ein.3ven
جمعه 17 مرداد 1393, 18:29 عصر
نه تازه کار نیستم . آره زیاد import کردم ولی این نمیشه .
eclipse-java-kepler-SR1-win32
shs1377
جمعه 17 مرداد 1393, 20:23 عصر
نه تازه کار نیستم . آره زیاد import کردم ولی این نمیشه .
eclipse-java-kepler-SR1-win32
در اکلیپس پروژه هایی با نام library و HomeActivity ندارید؟؟ اگه هست تغییر نام بدید یکی از مهمترین دلایل همین موضوعه اگه یک پروژه هم اسم پروژه ای که میخواید ایمپورت کنید باشه ارور میده
ho3ein.3ven
جمعه 17 مرداد 1393, 20:26 عصر
در اکلیپس پروژه هایی با نام library و HomeActivity ندارید؟؟ اگه هست تغییر نام بدید یکی از مهمترین دلایل همین موضوعه اگه یک پروژه هم اسم پروژه ای که میخواید ایمپورت کنید باشه ارور میده
نه همچین پروژه هایی رو ندارم .
تو این تاپیک عکس ها رو هم گذاشتم اگه امکانش هست ببینینش :
http://barnamenevis.org/showthread.php?464051-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-import-%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87
ho3ein.3ven
شنبه 18 مرداد 1393, 01:02 صبح
دوستان کسی راه حل دیگه ای سراغ نداره ؟ چون از این سورس نتونستم استفاده کنم .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.