انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اضافه کردن ایتم ها به صورت یک یکی به لیست ویو سفارشی (Animation برای item ها)

اضافه کردن ایتم ها به صورت یک یکی به لیست ویو سفارشی (Animation برای item ها)

#3
سلام.
در اینگونه ListView ها، لیست item ها به صورت کامل ساخته می شود (نه اینکه یکی یکی به لیست اضافه کنیم)، بعد شیوه آمدن item ها به درون صفحه است که با تاخیر و بر اساس یک Animation خواهد بود (در واقع نمایش آنها است که این حس را القا می کند که یکی یکی افزوده می شوند).
شما باید یک انیمیشن را برای آمدن item ها به درون صفحه تعیین کنید. بنابراین باید کد مربوط به Animation مورد نظر، درون کدهای Adapter نوشته شود (Adapter ای که برای ساخت item ها به کار می رود).
من یک کد را برایتان ذکر می کنم :
ابتدا در شروع Activity ، کد زیر را می نویسیم (تعریف یک متغیر) :

کد پی‌اچ‌پی:
ArrayList<BooleanItems_shown_or_not = new ArrayList<Boolean>;(); 

این متغیر برای این منظور به کار خواهد رفت که تشخیص بدهیم کدام item ها قبلا به درون صفحه آمده اند تا با اسکرول دوباره، انیمیشن برای دومین بار اجرا نشود.
بعد درون Adapter ، کد زیر را می نویسیم :

کد پی‌اچ‌پی:
int Items_shown_or_not_size Items_shown_or_not.size();
if(
Items_shown_or_not_size position+1){
    
Items_shown_or_not.add(true);
}
Animation myAnimation_2 AnimationUtils.makeInChildBottomAnimation(this.ctx);
if(
Items_shown_or_not.get(position) & position>10){ // first row will be animated so we do it after that number
    
row.setAnimation(myAnimation_2);
    
Items_shown_or_not.set(positionfalse);


که در آن، row همان View مربوط به ردیف (item) می باشد.
تعیین کرده ایم که انیمیشن برای position های بزرگتر از 10 اجرا شود، زیرا برای item های اول موجود در صفحه، چندان زیبا نخواهد بود (هدف ما جذاب بودن ظاهر ListView است).
کد مورد نظر باید درون روش getView از Adapter نوشته شود. به عنوان مثال :

کد پی‌اچ‌پی:
@Override
public View getView(int positionView convertViewViewGroup parent) {
    
View row convertView;
    
    if (
row == null) {
        
LayoutInflater inflater = (LayoutInflaterctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        
row inflater.inflate(layoutIdparentfalse);
    }
    
    
    
// show slide up animation for items that comes to screen (start) ------------------------------------
    
int Items_shown_or_not_size Items_shown_or_not.size();
    if(
Items_shown_or_not_size position+1){
        
Items_shown_or_not.add(true);
    }
    
Animation myAnimation_2 AnimationUtils.makeInChildBottomAnimation(this.ctx);
    if(
Items_shown_or_not.get(position) & position>10){ // first row will be animated so we do it after that number
        
row.setAnimation(myAnimation_2);
        
Items_shown_or_not.set(positionfalse);
    }
    
// show slide up animation for items that comes to screen (end) ------------------------------------
    

    
    // end
    
return row;



این یک مدل Animation است، اکنون که روند کلی آن را یاد گرفته اید می توانید Animation های دلخواه دیگر را نیز تست کنید.

اگر قبلا با Adapter در ساخت ListView آشنایی ندارید، توصیه می کنم کلید زیر را بخوانید (کد کامل یک Adapter دلخواه و چگونگی به کار بردن آن برای ListView در آن ذکر شده) :

کلید شماره 843

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط بنیامین خلیفه ، osam20 ، sinabelle


پیام‌های این موضوع
RE: اضافه کردن ایتم ها به صورت یک یکی به لیست ویو سفارشی - توسط admin - ۱۳۹۴/۰۴/۱۹, ۰۴:۱۳ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان