簡體   English   中英

如何在Android中使用onTouch在圓圈中移動視圖

[英]How to move a view in circle with onTouch in android

我在一個項目中面臨一個問題。 我有一個活動,其中用Framelayout創建了一個圓形布局。 我的問題是我不知道如何在圓形布局中實現項目。 並使用ontouch事件移動這些項目,當這些項目出現在特定位置時,將顯示一個祝酒詞或警報對話框。 我附上圖像進行演示。

在此處輸入圖片說明

您正在尋找的是一個視圖 ,該視圖通過拖動功能實現onTouch事件

1)為了使您的視圖呈圓形,您需要在可繪制文件夾中創建一個包含這些規范的文件。

創建您的drawable / your_circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
        android:angle="270"/>
</shape>

2)在您要環繞的視圖中,將背景設置為相同的可繪制對象,例如

<YourView 
    android:id="@+id/your_id"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:background="@drawable/your_circle"/>

然后,對活動應用以下過程

public class DraggableActivity extends Activity {

    float dX;
    float dY;
    int lastAction;
    View.OnTouchListener touchListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.drag_view_layout);

        // 1 - Create the touch listener
        touchListener = new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {
                switch (event.getActionMasked()) {
                    case MotionEvent.ACTION_DOWN:
                        dX = view.getX() - event.getRawX();
                        dY = view.getY() - event.getRawY();
                        lastAction = MotionEvent.ACTION_DOWN;
                        break;
                    case MotionEvent.ACTION_MOVE:
                        view.setY(event.getRawY() + dY);
                        view.setX(event.getRawX() + dX);
                        lastAction = MotionEvent.ACTION_MOVE;
                        break;
                    case MotionEvent.ACTION_UP:
                        if (lastAction == MotionEvent.ACTION_DOWN) {
                            Toast.makeText(DraggableView.this, "Clicked!", Toast.LENGTH_SHORT).show();
                        }
                        break;

                    default:
                        return false;
                }
                return true;
            }
        };

        // 2 - Add a reference to your view that already is stated on the layout
        final View dragView = findViewById(R.id.your_id);

        // 3 - Attac the the TouchListener to your view
        dragView.setOnTouchListener(this);
    }
}

讓我知道它是否有效。

問候,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM