Andrid 簡易實現畫面隨意移動并顯示坐標。

openkk 12年前發布 | 16K 次閱讀 Andrid Android開發 移動開發

本文通過FrameLayout和LinearLayout來布局,并通過捕捉onTouchEvent事件來實現畫面的隨意移動,并同時顯示移動后畫面坐標。

 

1、先上布局文件:main.xml

    <?xml version="1.0" encoding="utf-8"?>   
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">   
        <LinearLayout android:id="@+id/container"  
            android:layout_width="fill_parent"  
            android:layout_height="fill_parent"  
            android:orientation="horizontal">  

            <ImageView android:src="@drawable/icon1"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"/>  

        </LinearLayout>  

        <LinearLayout android:id="@+id/showXY"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:layout_gravity="bottom"  
            android:orientation="horizontal">  

            <TextView android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:padding="5px"  
                android:text="當前坐標:"/>  

            <TextView android:id="@+id/xyValue"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:padding="5px"  
                android:text="0,0"/>                   
        </LinearLayout>      
    </FrameLayout>   
2、Activity代碼,MainActivity.java
    package org.shuxiang.test;  

    import android.app.Activity;  
    import android.os.Bundle;  
    import android.view.MotionEvent;  
    import android.view.Window;  
    import android.widget.LinearLayout;  
    import android.widget.TextView;  

    public class MainActivity extends Activity  
    {  
        private LinearLayout container;   
        private int currentX;   
        private int currentY;   
        private TextView xyValue;  

        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            requestWindowFeature(Window.FEATURE_NO_TITLE);  
            setContentView(R.layout.main);  

            container = (LinearLayout) findViewById(R.id.container);  
            xyValue = (TextView) findViewById(R.id.xyValue);  

        }  

        @Override    
        public boolean onTouchEvent(MotionEvent event)  
        {   
          switch (event.getAction())  
          {   
              case MotionEvent.ACTION_DOWN:  
              {   
                  currentX = (int) event.getRawX();   
                  currentY = (int) event.getRawY();   
                  break;   
              }     
              case MotionEvent.ACTION_MOVE:  
              {   
                  int x2 = (int) event.getRawX();   
                  int y2 = (int) event.getRawY();   
                  container.scrollBy(currentX - x2 , currentY - y2);   
                  currentX = x2;   
                  currentY = y2;  
                  xyValue.setText(x2 + "," + y2);  
                  break;   
              }      
              case MotionEvent.ACTION_UP:  
              {   
                  break;   
              }   
          }   
            return true;    
        }   
    }  

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!