如何交替两个imageview? Android
How to alternate two imageview? Android
现在一点击就换图
我想让这个过程自动进行(例如每秒)
这是我的实际代码
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageView:
foto.setVisibility(View.INVISIBLE);
foto1.setVisibility(View.VISIBLE);
break;
case R.id.imageView2:
foto1.setVisibility(View.INVISIBLE);
foto.setVisibility(View.VISIBLE);
}
}
您应该使用带有“postDelayed”的Handler
。请参阅 this answer 了解一些代码。
此外,您可以尝试使用 'ImageSwitcher' 而不是两个 'ImageView's
试试这个:
boolean isFirstVisible;
long millis;
while(true) {
millis = System.currentTimeMillis();
if (isFirstVisible) {
foto1.setVisibility(View.INVISIBLE);
foto.setVisibility(View.VISIBLE);
isFirstVisible = false;
} else {
foto.setVisibility(View.INVISIBLE);
foto1.setVisibility(View.VISIBLE);
isFirstVisible = true;
}
Thread.sleep(1000 - millis % 1000);
}
也许使用 ViewSwitcher(在您的情况下 ImageSwitcher 应该可以工作)并使用 Handler
?
切换 View
s
private static final int delay=1000; //ms
Handler h = new Handler();
Runnable r = new Runnable(){
public run(){
//viewSwitcher.showNext();
//exampole of swtiching
h.postDelayed(r, delay);
}
}
h.postDelayed(r, delay);
停止这个循环使用h.removeCallbacks(r)
你也可以使用viewSwitcher.postDelayed
你可以有一个周期性的任务来做:
ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (foto.getVisibility == View.VISIBLE) {
foto.setVisibility(View.INVISIBLE);
foto1.setVisibility(View.VISIBLE);
} else {
foto.setVisibility(View.VISIBLE);
foto1.setVisibility(View.INVISIBLE);
}
}
});
}
}, 0, 1, TimeUnit.SECONDS);
看看ViewFlipper
http://developer.android.com/reference/android/widget/ViewFlipper.html
您可以使用 setFlipInterval(int)
或在 XML 中使用 android:flipInterval
设置延迟
现在一点击就换图
我想让这个过程自动进行(例如每秒)
这是我的实际代码
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageView:
foto.setVisibility(View.INVISIBLE);
foto1.setVisibility(View.VISIBLE);
break;
case R.id.imageView2:
foto1.setVisibility(View.INVISIBLE);
foto.setVisibility(View.VISIBLE);
}
}
您应该使用带有“postDelayed”的Handler
。请参阅 this answer 了解一些代码。
此外,您可以尝试使用 'ImageSwitcher' 而不是两个 'ImageView's
试试这个:
boolean isFirstVisible;
long millis;
while(true) {
millis = System.currentTimeMillis();
if (isFirstVisible) {
foto1.setVisibility(View.INVISIBLE);
foto.setVisibility(View.VISIBLE);
isFirstVisible = false;
} else {
foto.setVisibility(View.INVISIBLE);
foto1.setVisibility(View.VISIBLE);
isFirstVisible = true;
}
Thread.sleep(1000 - millis % 1000);
}
也许使用 ViewSwitcher(在您的情况下 ImageSwitcher 应该可以工作)并使用 Handler
?
View
s
private static final int delay=1000; //ms
Handler h = new Handler();
Runnable r = new Runnable(){
public run(){
//viewSwitcher.showNext();
//exampole of swtiching
h.postDelayed(r, delay);
}
}
h.postDelayed(r, delay);
停止这个循环使用h.removeCallbacks(r)
你也可以使用viewSwitcher.postDelayed
你可以有一个周期性的任务来做:
ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (foto.getVisibility == View.VISIBLE) {
foto.setVisibility(View.INVISIBLE);
foto1.setVisibility(View.VISIBLE);
} else {
foto.setVisibility(View.VISIBLE);
foto1.setVisibility(View.INVISIBLE);
}
}
});
}
}, 0, 1, TimeUnit.SECONDS);
看看ViewFlipper
http://developer.android.com/reference/android/widget/ViewFlipper.html
您可以使用 setFlipInterval(int)
或在 XML 中使用 android:flipInterval