androidモバイルview
元の場所:http://www.tuicool.com/articles/IFZb2mR
私達はよくいくつか効果をします.例えば、クリックした後の動画は指の動きに従って移動します.彼らはどうやって実現しますか?私たちは自動的にviewを移動するまで、アニメーションを設定できます.例えば、以前書いたFragmentのエントリとポップアップ動画などです.https://github.com/nuptboyzhb/FragmentAnimationDemo では、私たちはどうやって指の動きに合わせてViewで移動しますか?
1.ontouch事件
私たちはViewにontouchイベントを追加して、移動中の指のスクリーンに対する位置情報を取得します.
指の位置を取得すると、ビューのレイアウトを動的に設定することで、「移動」ビューの目的を達成することができます.[コード]
方法二の制限は主にviewのある配置に対して高い要求がありますが、layoutは多くの要求がありません.RelativeLayoutでもいいし、Lineear Layoutでもいいです.
4.Surfaceviewの対象
SurfaceViewでは、Viewを移動しやすく、「新版飛行機大戦」のソースコードを参照することができます.https://github.com/nuptboyzhb/newplanegame ]で、主機の移動は指の移動とともに移動します.
5.方法1と2のソースコード: https://github.com/nuptboyzhb/MoveViewWithFinger
私達はよくいくつか効果をします.例えば、クリックした後の動画は指の動きに従って移動します.彼らはどうやって実現しますか?私たちは自動的にviewを移動するまで、アニメーションを設定できます.例えば、以前書いたFragmentのエントリとポップアップ動画などです.https://github.com/nuptboyzhb/FragmentAnimationDemo では、私たちはどうやって指の動きに合わせてViewで移動しますか?
1.ontouch事件
私たちはViewにontouchイベントを追加して、移動中の指のスクリーンに対する位置情報を取得します.
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
moveViewWithFinger(view, event.getRawX(), event.getRawY());
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
2.方法1:set LayoutParaams指の位置を取得すると、ビューのレイアウトを動的に設定することで、「移動」ビューの目的を達成することができます.[コード]
/**
* View , view :view RelativeLayout
*
* @param view
* @param rawX
* @param rawY
*/
private void moveViewWithFinger(View view, float rawX, float rawY) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view
.getLayoutParams();
params.leftMargin = (int) rawX - ivMove.getWidth() / 2;
params.topMargin = (int) rawY - topTitleHeight - ivMove.getHeight() / 2;
view.setLayoutParams(params);
}
3.方法2:view.layout(l,t,r,b)方法二の制限は主にviewのある配置に対して高い要求がありますが、layoutは多くの要求がありません.RelativeLayoutでもいいし、Lineear Layoutでもいいです.
/**
* layout , view
* : view , , RelativeLayout, view
*
* @param view
* @param rawX
* @param rawY
*/
private void moveViewByLayout(View view, int rawX, int rawY) {
int left = rawX - ivMove.getWidth() / 2;
int top = rawY - topTitleHeight - ivMove.getHeight() / 2;
int width = left + view.getWidth();
int height = top + view.getHeight();
view.layout(left, top, width, height);
}
また、移動中にviewのサイズを動的に変えることもできます.4.Surfaceviewの対象
SurfaceViewでは、Viewを移動しやすく、「新版飛行機大戦」のソースコードを参照することができます.https://github.com/nuptboyzhb/newplanegame ]で、主機の移動は指の移動とともに移動します.
5.方法1と2のソースコード: https://github.com/nuptboyzhb/MoveViewWithFinger