我正在为Android编写一个 简单的Widget应用程序 ,在我的Widget I Layout中我有ImageViewRefresh
控件,我在其上设置了Refresh Image Picture(Green图片如下)。
在某些时候,我按下我的Widget中的ImageViewRefresh
按钮 ,应用程序开始从Internet下载一些内容,而应用程序下载数据背景我想做一些动画,比如旋转我的图像(下面的绿色图像)。我能这样做吗?
我已经阅读了一些关于图像动画的帖子,但我只能在应用程序中找到.gif图片的动画,这是一种旋转图像的方法,例如制作一些旋转的图像并更改它们或其他东西。
以下是我的layout
代码的一部分,我的图片没有旋转。为什么? (我的形象很简单.png图片)
<ProgressBar
android:id="@+id/progressBarRefresh"
android:layout_width="36dp"
android:indeterminateDrawable="@drawable/arrow_refresh"
android:layout_height="36dp"
android:layout_alignTop="@+id/imageViewArrowNext"
android:layout_marginRight="70dp"
android:layout_toLeftOf="@+id/textViewAutherName"
android:indeterminate="true" />
我想要旋转的图片。
答案 0 :(得分:4)
编辑:我会提前道歉,但我相信我的回答可能会误解问题:
原帖:
请勿尝试自行设置小部件动画
使用ProgressBar
将其设置为不确定,并使用setIndeterminateDrawable(Drawable d);
设置要旋转的图像。 (或者只留下看起来非常好的原生的)
修改强> 这是代码的样子:
// in your widget update method:
View v = LayoutInflater.from(context).inflate(R.layout.widget, null);
ProgressBar pb = (ProgressBar) v.findViewById(R.id.progressBar1);
pb.setIndeterminateDrawable(R.drawable.widget_processing);
这就是像这样的XML的样子:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/imageView1"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_alignLeft="@+id/textView1"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:indeterminate="true" />
</RelativeLayout>
答案 1 :(得分:-1)
在Android中动画图像的最佳方法是使用AnimationDrawable系统。要做到这一点,你需要一个类似于下面一个可绘制文件夹中的xml。
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/image1" android:duration="200" />
<item android:drawable="@drawable/image2" android:duration="200" />
<item android:drawable="@drawable/image3" android:duration="200" />
</animation-list>
其中image1,image2和image3在您的资源中是不同的drawable,每个drawable都代表图像的不同状态。
要创建图像,您只需使用Gimp或Photoshop打开图像,然后将其旋转几度并将其导出为新图像,然后重复。
或者,您可以使用以下代码旋转ImageView。首先在res文件夹下创建一个“anim”文件夹,然后添加一个包含以下内容的rotate.xml文件:
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
android:startOffset="0"
/>
然后导入并启动动画,如下所示:
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation);
rotation.setRepeatCount(Animation.INFINITE);
imageView.startAnimation(rotation);