在 ImageView 中短时间显示图像,然后恢复为原始图像
Show an image for a short time in ImageView and then revert back to original image
在一个简单的应用程序中,我有 2 个按钮和它们下面的图像:
<Button
android:id="@+id/open"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/open"
android:onClick="openCar"
android:text="@string/open_car" />
<ImageView
android:id="@+id/car_image"
android:layout_width="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/closed_car"
android:layout_height="0dp"
android:layout_weight="1" />
当前按钮单击处理程序只是更改图像(至 opened_car
):
public void openCar(View v) {
Toast.makeText(getApplicationContext(),
getString(R.string.car_opened),
Toast.LENGTH_LONG).show();
mNotificationManager.cancel(CommonConstants.NOTIFICATION_ID);
mCarImage.setImageResource(R.drawable.opened_car);
}
作为一个 Android 编程新手,我想知道,一段时间后恢复到原始图像(回到 closed_car
)的最佳方法是什么?
另外我想知道在核心 Android 中是否有一些更令人印象深刻的方法(即不需要任何额外的库)来交换图像 - 比如褪色 in/out?
我认为最好的方法是使用 Handlers
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 100ms delay
}
}, 100);
在一个简单的应用程序中,我有 2 个按钮和它们下面的图像:
<Button
android:id="@+id/open"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/open"
android:onClick="openCar"
android:text="@string/open_car" />
<ImageView
android:id="@+id/car_image"
android:layout_width="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/closed_car"
android:layout_height="0dp"
android:layout_weight="1" />
当前按钮单击处理程序只是更改图像(至 opened_car
):
public void openCar(View v) {
Toast.makeText(getApplicationContext(),
getString(R.string.car_opened),
Toast.LENGTH_LONG).show();
mNotificationManager.cancel(CommonConstants.NOTIFICATION_ID);
mCarImage.setImageResource(R.drawable.opened_car);
}
作为一个 Android 编程新手,我想知道,一段时间后恢复到原始图像(回到 closed_car
)的最佳方法是什么?
另外我想知道在核心 Android 中是否有一些更令人印象深刻的方法(即不需要任何额外的库)来交换图像 - 比如褪色 in/out?
我认为最好的方法是使用 Handlers
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 100ms delay
}
}, 100);