Turkcell | Geleceği Yazanlar

Soru & Cevap

Döngü içerisinde textView i refresh etmek

05.09.2014 - 10:31

arkadaşlar bir döngü içerisinde textview in özelliklerini değiştirip her seferinde 500 ms aralıklarla ekrana bastırmak istiyorum ancak döngü tamamlandığında sadece en son durumu ekranda görebiliyorum. nasıl yapılacağı konusunda yardımcı olabilir misiniz? Kodlarım şöyle:

[code]

package com.aek.crazy;

import java.util.Random;

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Message;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
       final  Random rnd = new Random();
        final TextView yazi = (TextView) findViewById(R.id.tv1);
        
        for(int i = 0; i < 10; i++){
                yazi.setTextSize(rnd.nextInt(100));
                yazi.setTextColor(Color.rgb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)));
                            switch(rnd.nextInt(9)){
                            case 0:
                                yazi.setGravity(Gravity.TOP | Gravity.LEFT);
                                break;
                            case 1:
                                yazi.setGravity(Gravity.TOP | Gravity.RIGHT);
                                break;
                            case 2:
                                yazi.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
                                break;
                            case 3:
                                yazi.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
                                break;
                            case 4:
                                yazi.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT);
                                break;
                            case 5:
                                yazi.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                                break;
                            case 6:
                                yazi.setGravity(Gravity.BOTTOM | Gravity.LEFT);
                                break;
                            case 7:
                                yazi.setGravity(Gravity.BOTTOM | Gravity.RIGHT);
                                break;
                            case 8:
                                yazi.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
                                break;
            
                        }
                            
                            try
                              {
                                    Thread.sleep(500);
                               }
                               catch(InterruptedException e)
                               {
                                       
                               }
            }
        
        
    }

    
  

}

[/code]

3001 Görüntülenme

2 Cevap

Ali Emre KAYGIN
05.09.2014 - 12:37

 

[code]

package com.aek.crazy;

import java.util.Random;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;

public class MainActivity extends Activity {
    int i = 0;
    final Random rnd = new Random();
    TextView yazi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        yazi = (TextView) findViewById(R.id.tv1);
        runThread();
    }

    private void runThread() {

        new Thread() {
            public void run() {
                while (i++ < 1000) {
                    try {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {

                                // /////////////////////////////////

                                yazi.setTextSize(rnd.nextInt(100));
                                yazi.setTextColor(Color.rgb(rnd.nextInt(256),
                                        rnd.nextInt(256), rnd.nextInt(256)));

                                switch (rnd.nextInt(9)) {
                                case 0:
                                    yazi.setGravity(Gravity.TOP | Gravity.LEFT);
                                    break;
                                case 1:
                                    yazi.setGravity(Gravity.TOP | Gravity.RIGHT);
                                    break;
                                case 2:
                                    yazi.setGravity(Gravity.TOP
                                            | Gravity.CENTER_HORIZONTAL);
                                    break;
                                case 3:
                                    yazi.setGravity(Gravity.CENTER_VERTICAL
                                            | Gravity.LEFT);
                                    break;
                                case 4:
                                    yazi.setGravity(Gravity.CENTER_VERTICAL
                                            | Gravity.RIGHT);
                                    break;
                                case 5:
                                    yazi.setGravity(Gravity.CENTER_VERTICAL
                                            | Gravity.CENTER_HORIZONTAL);
                                    break;
                                case 6:
                                    yazi.setGravity(Gravity.BOTTOM
                                            | Gravity.LEFT);
                                    break;
                                case 7:
                                    yazi.setGravity(Gravity.BOTTOM
                                            | Gravity.RIGHT);
                                    break;
                                case 8:
                                    yazi.setGravity(Gravity.BOTTOM
                                            | Gravity.CENTER_HORIZONTAL);
                                    break;

                                }
                                

                                // ////////////////////////////////////

                            }
                        });
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

}

[/code]

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Anıl SÖZERİ
05.09.2014 - 13:55
Set edip uyutmanız lazım yoksa değişiklikleri göremezsiniz UI da uyuyacağından dolayı, benim yolladığım linkteki şekliyle düzenlemeye çalışın isterseniz.
Ali Emre KAYGIN
05.09.2014 - 14:37
Bu yorumu editleyip son halini koydum. çalışıyor şu anda teşekkür ederim :)
Anıl SÖZERİ
05.09.2014 - 14:56
Rica ederim, kolay gelsin.
Anıl SÖZERİ
05.09.2014 - 10:46

Merhaba,

UI tarafındaki değişiklikler için RunOnUiThread kullanmalısınız. Bunu araştırmanızı öneririm.

İyi çalışmalar.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Ali Emre KAYGIN
05.09.2014 - 11:46
Daha çok yeniyim temelleri anlamaya çalışıyorum. UI tarafı derken neyi kastediyorsunuz? basit bir örnek kod verebilir misiniz?
Anıl SÖZERİ
05.09.2014 - 11:51
UI (User Interface) yani programınızın görsel kısmı. Daha önce bu konuda image processing ile ilgili bir işlem yapmaya çalışmıştım o sırada karşıma çıkan sorundan ötürü keşfetmiştim bende runOnUiThread yapısını. https://gelecegiyazanlar.turkcell.com.tr/soru/android-image-processing
Ali Emre KAYGIN
05.09.2014 - 12:00
her bir case için ayrı ayrı mı yapmam gerekiyor?
Anıl SÖZERİ
05.09.2014 - 12:08
Ben burada butona bastığımda her 250ms de bir farklı image bastırıyordum. Her case'in sonunda uyutursanız da aynı işi görür. Normal thread ile UI tarafı kitleniyor o nedenle sonuncusunu görüyorsunuz.
Ali Emre KAYGIN
05.09.2014 - 14:34
Teşekkür ederim sorun çözüldü. Kodların son hali aşağıdaki yorumumda.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.