Комбинации ImageView

123
02 июля 2021, 06:10

Вообщем я хочу реализовать перетаскивание картинок в другие поля, которые бы сложили определенную комбинацию , при которой например начинает включаться ToggleButton, и обратно, если комбинация неверная. Возможно ли как-то задать условие, которое бы определяло в ImageView нужный ресурс с картинкой? Или может есть какой-то другой метод. Я не особо давно этим всем занимаюсь. Был бы рад, если бы меня натолкнули на правильную мысль. Вот код:

@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_touch);
    image =   findViewById(R.id.image);
    image2 =  findViewById(R.id.image2);
    image3 =  findViewById(R.id.image3);
    image4 = findViewById(R.id.image4);
    image5 =  findViewById(R.id.image5);
    image6 = findViewById(R.id.image6);
    btn = findViewById(R.id.btn);
    text = findViewById(R.id.text);
    house_check (ToggleButton) = findViewById(R.id.house_check);

    image.setOnDragListener(new ChoiseDragListener());
    image2.setOnDragListener(new ChoiseDragListener());
    image3.setOnDragListener(new ChoiseDragListener());
    image4.setOnTouchListener(new ChoiseTouchListener());
    image5.setOnTouchListener(new ChoiseTouchListener());
    image6.setOnTouchListener(new ChoiseTouchListener());
    image4.setOnDragListener(new ChoiseDragListener());
    image5.setOnDragListener(new ChoiseDragListener());
    image6.setOnDragListener(new ChoiseDragListener());
    image.setOnTouchListener(new ChoiseTouchListener());
    image2.setOnTouchListener(new ChoiseTouchListener());
    image3.setOnTouchListener(new ChoiseTouchListener());
    btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
text.setText("Чисто пример действия"); }

private final class ChoiseTouchListener implements View.OnTouchListener {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
             if ((motionEvent.getAction() == MotionEvent.ACTION_DOWN) && ((ImageView) view).getDrawable() != null) {
        ClipData data = ClipData.newPlainText("", "");
        View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
        view.startDrag(data, shadowBuilder, view,0);
        return true;
       } else {
            return false;
    }
    }

}
private class ChoiseDragListener implements View.OnDragListener{
    @SuppressLint("ClickableViewAccessibility")
    @Override
    public boolean onDrag(View view, DragEvent dragEvent) {
        switch (dragEvent.getAction()){
            case DragEvent.ACTION_DRAG_STARTED:
                break;
            case DragEvent.ACTION_DRAG_ENTERED:
                break;
            case DragEvent.ACTION_DROP:

                ImageView target = (ImageView) view;
                ImageView dragged = (ImageView) dragEvent.getLocalState();
                Drawable target_draw = target.getDrawable();
                Drawable dragged_draw = dragged.getDrawable();
                dragged.setImageDrawable(target_draw);
                target.setImageDrawable(dragged_draw);

                final ImageView test = (ImageView) findViewById(R.id.image);
                final Bitmap bmap   = ((BitmapDrawable)test.getDrawable()).getBitmap();
                Drawable myDrawable = getResources().getDrawable(R.drawable.img1);
                final Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

                if(bmap.sameAs(myLogo))
                {
                    house_check.setChecked(true);
                }
                break;
        }

        return true;
    }
 }}

Частично получается задуманное с Bitmap,но я не понимаю,что еще нужно прописать,чтобы не вылетала данная ошибка,при перетаскивании в другие позиции:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
at com.loader.new.NowActivity$ChoiseDragListener.onDrag(NowActivity.java:142)
    at android.view.View.dispatchDragEvent(View.java:21128)
    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1566)
    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1566)
    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1566)
    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1566)
    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1566)
    at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:6051)
    at android.view.ViewRootImpl.-wrap7(ViewRootImpl.java)
    at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4096)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:203)
    at android.app.ActivityThread.main(ActivityThread.java:6251)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
READ ALSO
Как в Java удалить все “небуквенные” символы в строке используя regex?

Как в Java удалить все “небуквенные” символы в строке используя regex?

Нужно удалить все небуквенные символы - то есть все, кроме [a-zA-z]Есть строка string, и её нужно обработать

88
ArrayList, LinkedList (метод get())

ArrayList, LinkedList (метод get())

Можете пожалуйста пошагово объяснить, как будет происходить get(5) для списка из 10 элементов в ArrayList и в LinkedList

149
Spring Cache: не работает

Spring Cache: не работает

Я подключил к проекту кэширование через Spring CacheСначала я добавил аннотацию:

114
Java Jackson Views

Java Jackson Views

Все добрый вечер, можно ли использовать BaseViewsReduced для фильтрации и BaseViews

110