آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
این سایت محصول قابل فروش ندارد و بخش تیکت و پشتیبانی آن غیر فعال است
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

چالش اسنک بار ( حل شد ) + آموزش اسنک بار

خواست خدایی  8 سال پیش  8 سال پیش
+3 0

سلام
من یه چالش تو اسنک بار دارم و خواستم از زمان استفاده کنم و هم اسنک بار رو آموزش بدم برای دوستانی که بلد نیستن و هم سوالم رو بپرسم


اول سوال:
همونطور که می دونین در اسنکبار شما میتونین یه اکشن ست کنین تا بر روش کلیک شه و یه عملی انجام شه و از اونجایی که من اسنک بار نوع زمان زیاد رو انتخاب کردم میخوام اگه روی اون اکشن کلیک شد یه کاری رو انجام بدم که مشخصه و حالا اگه کلیک نشد یه کاری رو انجام بده که اینو نمیدونم چجوریه و خواهش می کنم اگه کسی میدونه تکه کد بده ممنون.

+1 0
چیزی که به ذهنم میرسه اینه که توی اول کد یک int تعریف کنید حالاداخل onclick یکی بهش اضافه کنید بعدش پایین onclick یک تاخیر به مدت اسنک بارتون بهش بدید مثلا 5 ثانیه یک if بزارید بعد از 5 ثانیه عدد 0 بود یعنی کلیک نشده و کار شما رو انجام بده و اما اگر عدد 1 بود عدد رو 0 کنه و کار دیگه ای انجام نده (8 سال پیش)
0 0
سلام نه به این شکل نمیشه متاسفانه خیلی بهش فکر کردم هم کد اضافی هست هم اینکه جوابم رو نمیده متاسفانه (8 سال پیش)
+1 0
میتونم بپرسم مشکلش چیه ؟ (8 سال پیش)
0 0
چون رد میشه ازش و به شرط میرسه و اگر من بخوام به همون اندازه زمان بزارم براش اونوقت باید مثلا از هندلر و ترد استفاده کنم که الان برای من این خودش تو ترد هست و اینکه تو اکتیویتی که دارم این کار رو میکنم زمان برام مهمه و برای کار قبلی باز زمان گذاشتم و اینطوری ux خوبی نداره. من دنبال راه خودش بودم به نظر میرسه این چیزی که دوستمون نوشته تو پست آخر همون راه حل مورد نظره از شما هم ممنونم (8 سال پیش)
 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
خواست خدایی  8 سال پیش
+1 0

و حالا آموزش
برای ست کردن اسنک بار شما نیاز به coordinatorlayout دارین

<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">

</android.support.design.widget.CoordinatorLayout>

البته با پرسش هایی که از دوستان کردم گفتن که باید کل لایوت زیر مجموعه coordinatorlayout  باشه ولی من همین تکه کد رو نوشتم تو لایه و مشکلم حل شد.
که البته با این کار اسنک بارتون انیمیت نمیشه :دی. ولی من واسه تست می خواستم پس شما کلا لایه رو باهاش بسازین
نکته: برای استفاده از اسنک بار نیاز به کتابخونه متریال دارین که برای این کار در گردل باید این کد رو اضافه کنید.
اونایی که بلد نیستن باید بزارینش همونجایی که junit رو پاک می کنین. البته اگر پاک می کنین:)

compile 'com.android.support:design:23.4.0'

و حالا برای ساخت اسنک بار کافیه coordinatorlayout رو که ساختین و بهش id دادین رو در جاوا معرفی و اسنک بارتون رو بسازین
به شکل زیر

CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);



Snackbar snackbar = Snackbar.make(coordinatorLayout, "مایل به برقراری ارتباط با اینترنت هستید؟",
Snackbar.LENGTH_LONG)
.setAction("اقدام کن", new View.OnClickListener() {

@Override
public void onClick(View v) {
// like toast or ....

}
});
snackbar.setActionTextColor(Color.RED); // این رنگ اکشن رو مشخص می کنه
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.parseColor("#ebc95e")); // رنگ متن اسنک بار مشخص می شود.
snackbar.show();
// LENGTH_INDEFINITE برای کامل می مونه
//
LENGTH_SHORT و LENGTH_LONG هم که مشخصه

همین دیگه زیاد کار سختی نیست. :)
لطفا منو هم کمک کنین که مشکلم حل شه ممنون

پاسخ به سوال 
sami  8 سال پیش
+1 0

 پاسخ صحیح

سلام.

امیدوارم با این کدا مشکلتون حل بشه :)

 
 

private boolean isClicked = false ;
private Snackbar snackBar;

snackBar = Snackbar.make(toolbar,"No Internet Connection!", Snackbar.LENGTH_LONG);
snackBar.setAction("Retry",new View.OnClickListener(){

@Override
public void onClick(View v){

snackBarClicked();

}

});


snackBar.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
super.onDismissed(snackbar, event);
if(!isClicked){
snackBarNotClicked();
}
}

@Override
public void onShown(Snackbar snackbar) {
super.onShown(snackbar);
}
});


public void showSnackBar(View view) {
isClicked = false;
snackBar.show();


}

private void snackBarClicked(){
isClicked = true;
Toast.makeText(MainActivity.this,"SnackBar Clicked",Toast.LENGTH_LONG).show();
// Other Codes
}

private void snackBarNotClicked(){

Toast.makeText(MainActivity.this,"SnackBar Not Clicked",Toast.LENGTH_LONG).show();
// Other Codes
}


 

 من تو کد بالا موقع ساخت SnackBar عمدا تولبار رو به عنوان پارامتر  اول پاس دادم!!!

اما باید از CoordinatorLayout استفاده کرد چون یه سری قابلیت هارو برای کار با SnackBar بهمون میده...

 

 

0 0
به نظر میرسه که جواب میده مرسی باید همه کد ها رو بزارم خیلی شد. ولی بازم ممنو تست میکنم الان (8 سال پیش)
0 0
سلام دوباره ممنون من به جواب رسیذم و یه جاهایی رو مشکل داشتم که سرچ کردم و اون هم حل شد. ممنونم از شما و به این پست جواب صحیح دادم. (8 سال پیش)
پاسخ به سوال 
خواست خدایی  8 سال پیش
0 0

با تشکر از آقا سامان عزیز من جوابم رو گرفتم.
و اینکه در جوابشون نکاتی بود که اونا رو هم اینجا قرار می دوم تا دوستان دیگه هم بدونند.

 name: 'onActionTouchTap',
 header: 'function(e)',
 desc: '//برای لحضه کلیک شدن اکشن باتن کلیک .'
          },
          {
            name: 'onDismiss',
            header: 'function()',
            desc: 'زمان رد شدن اسنک بار می توانید استفاده کنید.'
          },
          {
            name: 'onShow',
            header: 'function()',
            desc: 'زمان نمایش اسنک بار می توانید استفاده کنید..'
           }
         ]
       }
+1 0
سلام،خواهش می کنم مصطفی جان.خوبه که توضیحات لازم رو به این سوال اضافه کردین،اینجوری اگه بقیه دوستان هم به این مشکل بربخورن،می تونن از این توضیحات شما استفاده کنن. (8 سال پیش)
0 0
بله هدفم همین بود. بازم از شما ممنونم (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .