【问题标题】:SwipeGestureDetector change image from int [] to Imageview (Top & Bottom)SwipeGestureDetector 将图像从 int [] 更改为 Imageview(顶部和底部)
【发布时间】:2019-03-05 11:18:23
【问题描述】:

当我从下到上和从上到下滑动时,我需要从 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();
}


}

感谢您的帮助

一个新学生。

【问题讨论】:

    标签: java android arrays imageview gesture


    【解决方案1】:

    定义一个“计数器”(整数变量)来存储整数数组的索引。现在基于检测到的滑动,如果用户从下向上滑动会增加计数器并将索引项的图像设置为您的图像视图,反之亦然。

    示例代码:

    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;
       }
    }
    

    【讨论】:

    • 谢谢!它正在工作!
    【解决方案2】:

    最好使用ViewPagerRecyclerViewViewPager-like behavior 而不是GestureDetector

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2011-09-27
      相关资源
      最近更新 更多