Android中View跟隨手指移動效果
最近做了一個項(xiàng)目中,其中遇到這樣的需求要求圖片移動到手指觸碰的地方。具體實(shí)現(xiàn)代碼如下所示:
package com.example.plane; import Android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Display; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnKeyListener; import android.view.View.OnTouchListener; import android.view.Window; import android.view.WindowManager; public class MainActivity extends Activity { private int speed = 10; private MyPlane plane; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); plane = new MyPlane(this); setContentView(plane); // plane.setBackgroundResource(R.drawable.ic_launcher); WindowManager manager = getWindowManager(); Display display = manager.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); plane.currentX = metrics.widthPixels / 2; plane.currentY = metrics.heightPixels / 2; } @Override public boolean onTouchEvent(MotionEvent event) { /*float x = 0; float y = 0; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: x = event.getX(); y = event.getY(); break; case MotionEvent.ACTION_MOVE: x = event.getX(); y = event.getY(); break; case MotionEvent.ACTION_UP: x = event.getX(); y = event.getY(); break; }*/ plane.currentX=event.getX(); plane.currentY=event.getY(); plane.invalidate(); return super.onTouchEvent(event); } } package com.example.plane; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; public class MyPlane extends View { Bitmap plane; public float currentX; public float currentY; public MyPlane(Context context) { super(context); plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); setFocusable(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); canvas.drawBitmap(plane, currentX, currentY, p); } }
以上所述是小編給大家介紹的Android中View跟隨手指移動效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Android跟隨手指移動的控件demo實(shí)例
- Android自定義View實(shí)現(xiàn)跟隨手指移動的小兔子
- Android繪制跟隨手指移動的小球
- Android自定義圓形View實(shí)現(xiàn)小球跟隨手指移動效果
- Android實(shí)現(xiàn)拖動小球跟隨手指移動效果
- Android實(shí)現(xiàn)View拖拽跟隨手指移動效果
- Android View移動的六種方法小結(jié)
- Android View移動的3種方式總結(jié)
- Android切換至SurfaceView時閃屏(黑屏閃一下)以及黑屏移動問題的解決方法
- Android自定義View實(shí)現(xiàn)跟隨手指移動
相關(guān)文章
Android自定義通用標(biāo)題欄CustomTitleBar
這篇文章主要為大家詳細(xì)介紹了Android自定義通用標(biāo)題欄CustomTitleBar,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Android使用xUtils3.0實(shí)現(xiàn)文件上傳
這篇文章主要為大家詳細(xì)介紹了Android使用xUtils3.0實(shí)現(xiàn)文件上傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Android中ListActivity用法實(shí)例分析
這篇文章主要介紹了Android中ListActivity用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了ListActivity功能,注意事項(xiàng)與相關(guān)使用技巧,需要的朋友可以參考下2016-02-02Android Fragment動態(tài)創(chuàng)建詳解及示例代碼
這篇文章主要介紹了Android Fragment動態(tài)創(chuàng)建詳解的相關(guān)資料,并附實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-11-11Android編程實(shí)現(xiàn)WebView自適應(yīng)全屏方法小結(jié)
這篇文章主要介紹了Android編程實(shí)現(xiàn)WebView自適應(yīng)全屏方法,結(jié)合實(shí)例形式總結(jié)了三種常用的WebView自適應(yīng)全屏實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12全面解析Android中對EditText輸入實(shí)現(xiàn)監(jiān)聽的方法
這篇文章主要介紹了Android中對EditText輸入實(shí)現(xiàn)監(jiān)聽的方法,包括一個仿iOS的帶清除功能的ClearEditText輸入框控件的詳細(xì)使用介紹,需要的朋友可以參考下2016-04-04Android進(jìn)階教程之ViewGroup自定義布局
這篇文章主要給大家介紹了關(guān)于Android進(jìn)階教程之ViewGroup自定義布局的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06