J'atteint marquee sur l'image vue à l'intérieur HorizontalView, similaire que vous décrivez dans votre question, en utilisant CountDownTimer,
Pour votre question, vous devez prendre texview
et Imagview
dans l'aménagement intérieur HorizontalView et appliquer chapiteau sur HorizontalView ,
check-out code #
public class MyCounter extends CountDownTimer {
public MyCounter(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
if (leftToRight == true) {
MCObject.cancel();
//if (gallery.getScrollX() > (((imgv.length - 1) * multiplyValue)+addValue)) {
if (gallery.getScrollX() > ((imgv.length - 1) * multiplyValue)+addValue) {
count=((imgv.length - 1) *imageHeightWidth);
leftToRight = false;
MCObject.start();
}
if (count != gallery.getScrollX()) {
gallery.scrollBy(1, 0);
count++;
MCObject.start();
} else {
count=((imgv.length - 1) * imageHeightWidth);
leftToRight = false;
MCObject.start();
}
} else {
MCObject.cancel();
if (gallery.getScrollX() <= 0) {
count = -20;
leftToRight = true;
MCObject = new MyCounter(50, 1);
MCObject.start();
}
if (count != 0) {
gallery.scrollBy(-1, 0);
// Log.d("test", ""+hsv.getScrollX());
count--;
MCObject.start();
} else {
count = -20;
leftToRight = true;
MCObject = new MyCounter(50, 1);
MCObject.start();
}
}
}
@Override
public void onTick(long millisUntilFinished) {
}
}
Il donnera marquee de gauche à droite jusqu'à la longueur puis inversez de droite à gauche, deux chapiteau latéral.
Au moment de l'exécution, je suis d'ajouter des images dans la mise en page qui id déclaré en XML à l'intérieur Horizontalview, vérifier cette fonction pour ajouter des images au moment de l'exécution.
public void LLImageView() {
imgv = new ImageView[25];
for (int j = 0; j < 25; j++) {
imgv[j] = new ImageView(this);
img = new ImageView(MainScreenAnim.this);
para = new LinearLayout.LayoutParams(imageHeightWidth,imageHeightWidth);
para.leftMargin = 10;
para.topMargin = 5;
imgv[j].setOnClickListener(MainScreenAnim.this);
imgv[j].setBackgroundResource(Imgid[j]);
layoutHorizontal.addView(imgv[j], para);
images.add(Imgid[j].toString());
System.out.println("string [email protected]@@@@@@" + images.get(j));
}
}
intérieur OnCreate #
MCObject = new MyCounter(50, 1);
MCObject.start();
J'ai un nombre fixe d'images à afficher. Pour gérer les événements de clic, regardez sous le code.
public void onClick(View v) {
for (int j = 0; j < 25; j++) {
if (v == imgv[j]) {
//do something
}
}
}