نمایش ایتمهای ارایه در Toast(حل نشده!)
سلام خدمت همه دوستان
لطفا اخرین سوال رو جواب بدین
ممنون
اینم کدهای برنامم
Activity_Main
start = (Button) findViewById(R.id.start);
int min = 2;
int max = 9;
Random r = new Random();
final int i1 = r.nextInt(max - min + 1) + min;
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 1);
long time = cal.getTimeInMillis();
Intent i = new Intent(Activity_Main.this, MyReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(Activity_Main.this, 0, i, 0);
// am.set(AlarmManager.RTC_WAKEUP,time,pi); //مدت زمان نمایش توست روی صفحه
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, i1 * 1000, pi);
}
});
//MyReceive
@Override
public void onReceive(Context con, Intent arg1) {
int min = 767;
int max = 768;
Random r = new Random();
int i1 = r.nextInt(max - min + 1) + min;
min = 767;
max = 768;
r = new Random();
int i2 = r.nextInt(max - min + 1) + min;
final Toast t1 = Toast.makeText(con, "TOAST", Toast.LENGTH_SHORT);
t1.setGravity(Gravity.CENTER, i1, i2);
t1.show();
از این کد استفاده کن
final Toast t = Toast.makeText(getBaseContext(), "message",Toast.LENGTH_SHORT);
t.show();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {t.show();}
public void onFinish() {t.show();}
}.start();
این کد باعث میشه 5 ثانیه نشون بده
2 ثانیه به خاطر Toast.LENGTH_SHORT و سه ثانیه هم که در CountDownTimer اعلام شده
یک کلاس بساز به اسم Toaster و این کدها رو براش بذار
public class Toaster {
private static final int SHORT_TOAST_DURATION = 500;
private Toaster() {}
public static void makeLongToast(String text, long durationInMillis) {
final Toast t = Toast.makeText(G.context, text, Toast.LENGTH_SHORT);
t.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
new CountDownTimer(Math.max(durationInMillis - SHORT_TOAST_DURATION, 100), 100) { // <===== این عداد هم کنترل زمان مرکزی هستند
@Override
public void onFinish() {
t.show();
}
@Override
public void onTick(long millisUntilFinished) {
t.show();
}
}.start();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
t.cancel();
}
}, 500);
}
}
حالا هرجا خواستی توست بزنی کد زیر رو بنویس
Toaster.makeLongToast(" متن مورد نظر" + CounterActivity.CS, 10);
اون 10 آخر رو میبینی ؟ اون زمانشه ، هرچی بیشترش کنی بیشتر میشه. فکر کنم 1000 میشه یک ثانیه.
اون 500 که آخر کد کلاس نوشته شده یعنی مثلا بعد از 0/5 ثانیه توست رو کنسل کن. یادش باشه اون رو هم یه عدد زیاد بذاری. چون توست زیر یک ثانیه ای نداریم، برای توست های زیر یک ثانیه از اون استفاده می کنند.
دوستان برای اینکه توست رو به ارایه وصل کنم و همه اندیسهای ارایه رو یکی یکی با توست نشون بدم چکار باید بکنم؟
//MyReceive
final Handler mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { Random r = new Random(); int i1 = r.nextInt(Activity_Main.w); r = new Random(); int i2 = r.nextInt(Activity_Main.h); Log.d("tag : ", i1 + " : " + i2); for (String arr : array) { t1 = Toast.makeText(mContext, arr, Toast.LENGTH_SHORT); } //delay in show toast duration 100ms Handler h = new Handler(); h.postDelayed(new Runnable() { @Override public void run() { t1.cancel(); } }, 100); //random location on screen t1.setGravity(Gravity.TOP, i1, i2); t1.show(); //delay in show next toast int min = 3; int max = 8; Random random = new Random(); int d = random.nextInt(max - min + 1) + min; Log.d("random ", String.valueOf(d)); mHandler.postDelayed(this, d * 1000); } }, 100);
یه for گذاشتم که ارایه رو میخونه اما فقط اندیس اخر ارایه رو نشون میده و وقتی که داخل بلاک For از ()t1.show استفاده میکنم درست میشه ولی هندلری ک نوشتم برای تغییر گراویتی و مدت زمان نمایش توست از کار میافته
ممنون میشم راهنمایی کنید
دوست عزیز من مشکلت را دقیق نفهمیدم! میخواهی عناصر داخل یک ارایه را یکی یکی و بصورت متوالی هر کدام را داخل یک toast جدا نشون بدی؟؟؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .