ProgressIndicator не анимация на ежевике - PullRequest
0 голосов
/ 04 августа 2011

Я хочу отображать индикатор прогресса на экране при загрузке изображений из Интернета. Я использую ниже код.,

Bitmap bitmap ;
    BitmapField imageField ;
    VerticalFieldManager vfm= new VerticalFieldManager();
    ProgressAnimationField spinner =new ProgressAnimationField(Bitmap.getBitmapResource("spinner2.png"));                      
    vfm.add(spinner);
    new Thread(new Runnable() 
    {
        public void run() 
        {
            bitmap =  new UrlToImage(Constants.ICON_URL+"_big.png"+suffix).getImage();                            
            imageField = new BitmapField(bitmap);
            vfm.delete(spinner)
            vfm.add(imagefield);
        }
    }).start();

Если я выполню, это вызовет falseStateException. Снова я перехожу на UI Thead.,

    Bitmap bitmap ;                                                                                                           
    BitmapField imageField ;
    VerticalFieldManager vfm = new VerticalFieldManager();                                                                
    ProgressAnimationField spinner =new ProgressAnimationField(Bitmap.getBitmapResource("spinner2.png"));                           
    vfm.add(spinner);
    UiApplication.getUiApplication().invokeLater(new Runnable() 
    {
        public void run() 
        {
            bitmap =  new UrlToImage(Constants.ICON_URL+"_big.png"+suffix).getImage();                                    
            imageField = new BitmapField(bitmap);
            vfm.delete(spinner)
            vfm.add(imagefield);

        }
    });

Нет ошибок отображения. но поле прогресса анимации не анимировано. Что изменить в моем коде для анимации progressAnimatedField. Просьба дать любую идею ..

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

Мне кажется, проблема в том, что вы пытаетесь выполнять как пользовательский, так и не-пользовательский операции в потоке пользовательского интерфейса.Таким образом, ваш UrlToImage удерживает поток UI в качестве заложника во время извлечения данных из сети, предотвращая все другие операции пользовательского интерфейса (включая перерисовку анимированного индикатора прогресса).Что-то вроде этого:

Bitmap bitmap ;                                                                                                           
BitmapField imageField ;
VerticalFieldManager vfm = new VerticalFieldManager();                                                                
ProgressAnimationField spinner =new ProgressAnimationField(Bitmap.getBitmapResource("spinner2.png"));                           
vfm.add(spinner);
new Thread(new Runnable() 
{
    public void run() 
    {
        bitmap =  new UrlToImage(Constants.ICON_URL+"_big.png"+suffix).getImage();                                    
        imageField = new BitmapField(bitmap);
        UiApplication.getUiApplication().invokeLater(new Runnable()
            public void run() {            
                vfm.delete(spinner);
                vfm.add(imagefield);
            }
        });
    }
});
0 голосов
/ 08 августа 2011

Я знаю, что это уже помечено как ответ, но я подумал, что вы должны посмотреть мой пост на эту тему здесь

Это должно устранить все проблемы с сердцебиением в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...