2015-01-25 2 views
0

Школьное предприятие, в котором я участвую, изучает эффекты Google Glass на отвлечении водителей. Для этого мы используем эффект Stroop - http://en.wikipedia.org/wiki/Stroop_effectПериодически просматривайте несколько просмотров CardBuilder

До сих пор мы использовали CardScrollView, чтобы наши участники могли прокручивать несколько карт при использовании симулятора вождения. Проблема в том, что при каждом обращении каждый раз отвлекаться.

В идеале мы хотели бы, чтобы каждый вид отображения отображался в течение нескольких секунд или около того, а затем переключался на следующий.

Я весь день прочесываю сеть и пробую так много разных конфигураций, как это теоретически может работать, но я еще не успел.

Вот этот класс, с которым я работал совсем недавно. Я вызываю run из основной функции активности onResume().

package com.google.android.glass.sample.apidemo; 
import android.app.Activity; 
import android.content.Context; 
import android.os.SystemClock; 
import com.google.android.glass.widget.CardBuilder; 
import java.lang.Runnable; 
import java.util.ArrayList; 

public class StroopCycle implements Runnable { 
private Activity mActivity; 
private ArrayList<CardBuilder> cards = new ArrayList<CardBuilder>(); 

public StroopCycle(Activity act){ 
    mActivity = act; 

    cards.add(createCard(mActivity, R.drawable.one)); 
    cards.add(createCard(mActivity, R.drawable.two)); 
    cards.add(createCard(mActivity, R.drawable.three)); 
    cards.add(createCard(mActivity, R.drawable.four)); 
    cards.add(createCard(mActivity, R.drawable.five)); 
    cards.add(createCard(mActivity, R.drawable.six)); 
    cards.add(createCard(mActivity, R.drawable.seven)); 
    cards.add(createCard(mActivity, R.drawable.eight)); 
    cards.add(createCard(mActivity, R.drawable.nine)); 
    cards.add(createCard(mActivity, R.drawable.ten)); 
    cards.add(createCard(mActivity, R.drawable.eleven)); 
    cards.add(createCard(mActivity, R.drawable.twelve)); 
    cards.add(createCard(mActivity, R.drawable.thirteen)); 
    cards.add(createCard(mActivity, R.drawable.fourteen)); 
    cards.add(createCard(mActivity, R.drawable.fifteen)); 
    cards.add(createCard(mActivity, R.drawable.sixteen)); 
    cards.add(createCard(mActivity, R.drawable.seventeen)); 
    cards.add(createCard(mActivity, R.drawable.eighteen)); 
    cards.add(createCard(mActivity, R.drawable.nineteen)); 
    cards.add(createCard(mActivity, R.drawable.twenty)); 
} 

@Override 
public void run() { 
    for(int j = 0; j < cards.size(); j++){ 
     mActivity.setContentView(cards.get(j).getView()); 
     SystemClock.sleep(1000); 
     if (j == cards.size() - 1){ 
      j = 0; 
     } 
    } 
} 

private static CardBuilder createCard(Context context, int drawable) { 
    return new CardBuilder(context, CardBuilder.Layout.TITLE) 
      .addImage(drawable); 
} 
} 

Любая помощь была бы так оценена!

спасибо.

ответ

0

Одним из решений было бы использовать CardScrollView с резервными копиями CardScrollAdapter.
Вы найдете пример на official documentation website.
Затем, чтобы сменить карточку, используйте либо animate(int position, Animation animationType), либо setSelection(int position)

+0

Отличная идея! Однако я уже пробовал это. Проблема в том, что при использовании анимации или setSelection в цикле отображается только последняя итерация. –

+0

Потому что вам нужно отделить свой пользовательский интерфейс (активность) и ваш таймер (A Runnable или Timer) –

+0

Спасибо! Не могли бы вы указать мне примерный код или что-то, что могло бы указать мне в правильном направлении? Я новичок в разработке Android и Google Glass. –