android 怎样在appwidget中使用动画

本文介绍了一种通过AppWidget实现App图标动画的方法。该方法利用线程不断切换预设的图片资源,以达到简单的动画效果。适用于希望为App图标添加动态元素的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目是碰到这样一个需求,点击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);
       
}
注意:如果想要实现复杂的动画,这种方法是行不通的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值