我需要从int数组中获取一个图像,然后在Imageview中显示,当我从下往上和从上到下滑动时。
GestureDetector运行良好,但我想从int []中获取图像,然后在滑动时放入Imageview。
例如:
int [] imageBank = new int[] {
R.drawable.image0,
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4, };
从上到下滑动,从[]中获取图像0,在Imageview中显示
从上到下滑动,从[]中获取图像1,在Imageview中显示
从下到上滑动,从[]中获取图像0,在Imageview中显示
从下到上滑动,从[]中获取图像4,在Imageview中显示
完成MainActivity
import android.support.constraint.ConstraintLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import driss.moodtracker.R;
import driss.moodtracker.component.SwipeGestureDetector;
public class MainActivity extends AppCompatActivity {
private SwipeGestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector = new SwipeGestureDetector(this);
Button button_comment = (Button) findViewById(R.id.button1);
Button button_calendar = (Button) findViewById(R.id.button2);
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
public void onSwipe(SwipeGestureDetector.SwipeDirection direction) {
ImageView imagePic = (ImageView) findViewById(R.id.imageview);
ConstraintLayout currentLayout = (ConstraintLayout) findViewById(R.id.main_layout);
// ARRAY OF SMILEYS LIST
int [] arraySmileys = new int[] {
R.drawable.smiley_super_happy,
R.drawable.smiley_happy,
R.drawable.smiley_normal,
R.drawable.smiley_disappointed,
R.drawable.smiley_sad,
};
// HOW CAN I DO ?
String message = "";
switch (direction) {
case LEFT_TO_RIGHT:
message = "Left to right swipe";
break;
case RIGHT_TO_LEFT:
message = "Right to left swipe";
break;
case TOP_TO_BOTTOM:
imagePic.setImageResource(R.drawable.smiley_disappointed);
currentLayout.setBackgroundResource(R.color.faded_red);
message = "Top to bottom swipe";
break;
case BOTTOM_TO_TOP:
currentLayout.setBackgroundResource(R.color.light_sage);
imagePic.setImageResource(R.drawable.smiley_super_happy);
message = " Bottom to top swipe";
break;
}
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
谢谢你的帮助
一个新学生。
定义'计数器'(整数变量)来存储整数数组的索引。现在基于检测到滑动,如果用户从下往上滑动,则递增计数器并将该索引项目的图像设置为您的imageview,反之亦然,直到底部。
示例代码:
int counter = 0;
public void swipe() {
switch (direction) {
case LEFT_TO_RIGHT:
message = "Left to right swipe";
break;
case RIGHT_TO_LEFT:
message = "Right to left swipe";
break;
case TOP_TO_BOTTOM:
if(counter > 0) {
counter--;
imagePic.setImageResource(arraySmileys[counter]);
}
break;
case BOTTOM_TO_TOP:
if(counter < arraySmileys.length()) {
counter++;
imagePic.setImageResource(arraySmileys[counter]);
}
break;
}
}
最好使用ViewPager
或RecyclerView
与ViewPager
-like behavior而不是GestureDetector