android 怎样在appwidget中使用动画

来源:互联网 发布:linux vi命令怎么使用 编辑:程序博客网 时间:2024/06/05 14:10

最近做项目是碰到这样一个需求,点击app的icon,app的icon要动起来,正常情况下这个是不可能实现的。想了半天可以通过appwidget来实现,但是查资料发现appwidget

中是不支持Animation的。这里想了一个办法,通过在线程里面不断切换图片来达到动画的效果,这样是可以实现简单动画的,这里简单说明一下是怎么实现的。

首先把图片资源放在一个数组里面。

 private int []bitmapId=new int[]{R.drawable.a, R.drawable.b, R.drawable.c,R.drawable.d, R.drawable.e, R.drawable.f, R.drawable.g, R.drawable.h };

再把Bitmap对象保存在ArrayList中

   public void initBitmap(){        //显示动态变化过程的bitmap        for(int i=0;i<bitmapId.length;i++){            bmplist.add(i, BitmapFactory.decodeResource(getResources(),bitmapId[i]));        }    }

在线程里面不断切换图片

 private class UpdateThread extends Thread {  //动画线程        @TargetApi(Build.VERSION_CODES.CUPCAKE)        @Override        public void run() {            while (CleanAppWidgetProvider.isRunAnim) {                Log.d(TAG, "UpdateThread");                AppWidgetManager manager = AppWidgetManager.getInstance(UpdateService.this);                ComponentName thisWidget = new ComponentName(UpdateService.this, CleanAppWidgetProvider.class);                temp++;                showClearProcess(temp);                if(remoteViews!=null){                    remoteViews.setImageViewBitmap(R.id.iv_anim, bmp);  //跟更新显示图片                    manager.updateAppWidget(thisWidget, remoteViews);    //更新appwidget显示                }else {                    Log.d(TAG, "remoteViews 为空");                }                try {                  //  Thread.sleep(5);//线程睡眠时间5ms                } catch (Exception e) {                   // e.printStackTrace();                }            }        }    }

public void showClearProcess(int process){      Log.d(TAG, " process "+ process);      bmp=(Bitmap)bmplist.get(tempNum);       }
注意:如果想要实现复杂的动画,这种方法是行不通的。


原创粉丝点击