English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Androidでカスタムビューを実装してジェスチャースライドダンパーを構成

このコントロールは、Androidのタッチスライドコントロールの詳細なコードを共有し、皆様の参考にしました。具体的な内容は以下の通りです。

1カスタムコントロールクラス:MyViewを新規作成します。

public class MyView extends Button{}}
//前回のスライド後の座標値を記録
private int lastX;
private int lastY;
public MyView(Context context) {
  super(context);
  // TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs){
  super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
  // viewが携帯電話のスクリーンに対するxy値を取得
  int x = (int) event.getRawX();
  int y = (int) event.getRawY();
  switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
      break;
    case MotionEvent.ACTION_MOVE:
      int deltaX = x-lastX;
      int deltaY = y-lastY;
      int translationX = (int) (ViewHelper.getTranslationX(this) + deltaX);
      int translationY = (int) (ViewHelper.getTranslationY(this) + deltaY);
      ViewHelper.setTranslationX(this, translationX);
      ViewHelper.setTranslationY(this, translationY);
      break;
    case MotionEvent.ACTION_UP:
      break;
    default:
      break;
  }
  lastX = x;
  lastY = y;
  return true;
}

上記のコードはカスタムボタンクラスであり、onTouchEvent()メソッドをオーバーライドしてユーザーのスライドをリスンします。スライドについて語るとき、オフセット量の概念が必ず存在します。

translationX、translationYはViewの左上隅が親レイアウトに対するオフセット量です。アニメーションスライドを実現するために第三方のnineoldandroidsを使用しています。

ViewHelper.getTranslationY(this)はこのViewのオフセットを計算し、初期値は0です。左にオフセットする場合は負の値、右にオフセットする場合は正の値です。

2.xml レイアウト

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
>
 <com.example.administrator.slide.MyView
   android:id="@"+id/myview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="私はスライドできる"/>
</RelativeLayout>

これでこの記事は終わりです。皆様の学習に役立つことを願っています。また、呐喊教程を多くの人がサポートしていただけることを願っています。

声明:この記事の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーによって自発的に貢献し、アップロードされたコンテンツであり、このサイトは所有権を持ちません。また、人間による編集は行われていません。著作権に関する問題がある場合は、メールを送信してください:notice#oldtoolbag.com(メールを送信する際に、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がとれましたら、このサイトは即座に侵害される可能性のあるコンテンツを削除します。)

基本教程
おすすめ