我创建了一个幻灯片,其中我已禁用默认滑动操作以滑动屏幕。相反,当我单击图像时幻灯片执行。但是我希望在点击图像后延迟滑动达t毫秒。点击操作的方法是onClickSlideDown。 viewpager类如下:
public class slidescreen extends ActionBarActivity implements Animation.AnimationListener {
//Declare variables
ViewPager viewPager;
PagerAdapter adapter;
int[] background;
int[] icon;
String[] title;
String[] title_2;
String[] description;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.slidescreenmain);
//Generate sample data
background = new int[]{R.mipmap.bg1, R.mipmap.bg2, R.mipmap.bg3, R.mipmap.bg4, R.mipmap.bg5, R.mipmap.bg6,
R.mipmap.bg7, R.mipmap.bg8, R.mipmap.bg9, R.mipmap.bg10, R.mipmap.bg11, R.mipmap.bg12};
icon = new int[]{R.mipmap.im1, R.mipmap.im2, R.mipmap.im3, R.mipmap.im4, R.mipmap.im5,
R.mipmap.im6, R.mipmap.im7, R.mipmap.im8, R.mipmap.im9, R.mipmap.im10, R.mipmap.im11, R.mipmap.im12};
title = new String[]{"ALTA RESISTENCIA A", "ALTA RESISTENCIA", "ALTAMENTE", "RESISTENCIA A", "MATERIAL", "ALTA RESISTENCIA",
"RESISTENCIA AL", "RESISTENCIA", "ESTABILIDAD", "ESTABILIDAD", "RESISTENCIA A", "NULA ABSORCIÓN"};
title_2 = new String[]{"LOS RAYOS UV", "AL FUEGO Y AL CALOR", "RESISTENTE AL RAYADO", "LAS MANCHAS", "INCOMBUSTIBLE", "A LA HIDRÓLISIS",
"HIELO Y DESHIELO", "MECÁNICA", "DIMENSIONAL", "DEL COLOR", "LA ABRASIÓN", "DEL AGUA"};
description = new String[]{"Por naturaleza, es capaz del repeler\n" + "líquidos y gases para que no penetren en\n" +
"la superficie. De este modo, el\n" + "mantenimiento de la superficie es mínimo\n" +
"y más fácil de limpiar."};
// Locate the ViewPager in viewpager_main.xml
viewPager = (ViewPager) findViewById(R.id.pager);
// Pass results to ViewPagerAdapter Class
adapter = new ViewPagerAdapter(slidescreen.this, background, icon, title, title_2, description);
// Binds the Adapter to the ViewPager
viewPager.setAdapter(adapter);
getSupportActionBar().hide();
}
public void onClickSlideDown(View view) {
Animation slideback;
ImageView iconimage, whitebox;
TextView titletext, title_2text, descriptiontext;
titletext = (TextView)findViewById(R.id.title);
title_2text = (TextView)findViewById(R.id.title_2);
descriptiontext = (TextView)findViewById(R.id.description);
iconimage = (ImageView)findViewById(R.id.icon);
whitebox = (ImageView)findViewById(R.id.whitebox);
slideback = AnimationUtils.loadAnimation(this, R.anim.whiteboxanimback);
slideback.setAnimationListener(this);
whitebox.startAnimation(slideback);
iconimage.startAnimation(slideback);
titletext.startAnimation(slideback);
title_2text.startAnimation(slideback);
descriptiontext.startAnimation(slideback);
if (viewPager.getCurrentItem() < viewPager.getAdapter().getCount()) {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
} else {
Intent i1 = new Intent(this, glass_3.class);
startActivity(i1);
}
谢谢:)
答案 0 :(得分:0)
试一试。在onClickSlideDown方法中添加此代码。
Thread timer = new Thread(){
public void run(){
try{
sleep(2000);
}catch(InterruptedException e){
e.printStackTrace();
}finally
{
//Your entire code of onClickSlideDown method
}
}
};
timer.start();
希望这会有效并将幻灯片延迟2000毫秒。
更新:如果关键词''this''in intent导致错误,请尝试在intent中使用getApplicationContext()而不是this关键字。
答案 1 :(得分:0)
感谢@Ish的答案,但你不能在任何其他线程上进行ui操作......
所以处理程序来救援,默认构造函数使用主线程Message queue looper object
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//TODO: Write your code here
}
}, delayinMiils);
但是当你添加延迟时,你正在玩主线程的上下文泄漏...为了避免任何类型的上下文泄漏,请参考下面的实现
private final MyHandler mHandler = new MyHandler(this);
/**
* Instances of anonymous classes do not hold an implicit
* reference to their outer class when they are "static".
*/
private static final Runnable sRunnable = new Runnable() {
@Override
public void run() { /* ... */ }
};
// Post a message and delay its execution for 10 minutes.
mHandler.postDelayed(sRunnable, 1000 * 60 * 10);