2017-10-31 1 views
-1

ViewPagerでAndroidに3つの画像を表示するスライドバナーを作成しましたが、3つの画像間で5秒ごとに変更する必要があります。決められた時間内にViewPagerから画像を変更するには?

私はスレッドを試しましたが、5秒間にどのように変更するのか分かりません。

誰でも教えてください。

これは私のメイン

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    viewPager = (ViewPager) findViewById(R.id.viewPagerMain); 
    adapter = new ViewPagerAdapter(MainActivity.this,imagesArray); 
    viewPager.setAdapter(adapter); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    TextView tvEventos = (TextView) findViewById(R.id.eventos); 
    tvEventos.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, EventActivity.class); 
      startActivity(i); 
     } 
    }); 

    TextView tvPromociones = (TextView) findViewById(R.id.promociones); 
    tvPromociones.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, EventActivity.class); 
      startActivity(i); 
     } 
    }); 
    TextView tvDirectory = (TextView) findViewById(R.id.directorio); 
    tvDirectory.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, DirectoryActivity.class); 
      startActivity(i); 
     } 
    }); 

    TextView tvPinatas = (TextView) findViewById(R.id.pinatas); 
    tvPinatas.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, CumpleaniosActivity.class); 
      startActivity(i); 
     } 
    }); 
    TextView tvBebes = (TextView) findViewById(R.id.bebes); 
    tvBebes.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, BebesActivity.class); 
      startActivity(i); 
     } 
    }); 
} 

これは私のViewPagerAdapter

私はスレッドを作成する方法と位置の変更を行うためにどこを知らない
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 


    viewPager = (ViewPager) findViewById(R.id.viewPagerMain); 
    adapter = new ViewPagerAdapter(MainActivity.this,imagesArray); 
    viewPager.setAdapter(adapter); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    TextView tvEventos = (TextView) findViewById(R.id.eventos); 
    tvEventos.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, EventActivity.class); 
      startActivity(i); 
     } 
    }); 

    TextView tvPromociones = (TextView) findViewById(R.id.promociones); 
    tvPromociones.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, EventActivity.class); 
      startActivity(i); 
     } 
    }); 
    TextView tvDirectory = (TextView) findViewById(R.id.directorio); 
    tvDirectory.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, DirectoryActivity.class); 
      startActivity(i); 
     } 
    }); 

    TextView tvPinatas = (TextView) findViewById(R.id.pinatas); 
    tvPinatas.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, CumpleaniosActivity.class); 
      startActivity(i); 
     } 
    }); 
    TextView tvBebes = (TextView) findViewById(R.id.bebes); 
    tvBebes.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent i = new Intent(MainActivity.this, BebesActivity.class); 
      startActivity(i); 
     } 
    }); 
} 

です。

+1

ねえ、いくつかのソースコードを追加します! – Xenolion

答えて

0

使用Handler#postDelayed(Runnable task, long delayInMillis)

int count = 0; 
Handler handler = new Handler(); 
Runnable task = new Runnable() { 
    @Override 
    public void run() { 
     if (count == 3) return; 

     pager.setCurrentItem(count); 
     count++; 
     handler.postDelayed(this, 5000); 
    } 
} 
handler.postDelayed(task, 5000); 
+0

これはMainまたはViewPagerAdapterにあるはずですか? (私はすでに上記のコードを含んでいます) – Melfo

+0

@Melfo 'main'ではHandler [here](https://developer.android.com/reference/android/os/Handler.html)のドキュメントを必ず読んでください。 –

0

と仮定すると、あなたのViewPager、あなたはこのようなコードを使用することができますpager命名された「事前」イメージたびに、あなたのタイマーがトリガーに:あなたのコードが何

int current = pager.getCurrentItem(); 
int size = pager.getAdapter().getCount(); 

if (current < (size - 1)) { 
    pager.setCurrentItem(current + 1, true); 
} else { 
    pager.setCurrentItem(0, true); 
} 
0

です論理?少し説明してコードを見せてください。これは、ここですべての5S(5000ms)

ページの変数を定義カウント、ハンドルとタイマーで行わ実行されます。

pagesCount = 0;

final Handler handler = new Handler(); 
        final Runnable task = new Runnable() { 
         public void run() { 
          if(pagesCount == 3){ 
           pagesCount = 0; 
          }else{ 
           pagesCount++; 
          } 
          ViewPager.setCurrentItem(pagesCount); 
         } 
        }; 

       timer = new Timer(); 
       timer .schedule(new TimerTask() { 

        @Override 
        public void run() { 
         handler.post(task); 
        } 
       }, 0, 5000); 
+0

私は既に投稿を編集して自分のコードを書いていますが、本当に助けに感謝します – Melfo

関連する問題