【发布时间】:2013-11-23 07:21:43
【问题描述】:
我有一个 ViewPager ,其中包含 2 个项目,还有一个 Button 用于 ViewPager Animation 。我想用 Button 的 TouchEvent 滑动 ViewPager 而不向上移动手指,即从 Button 滑动手指并获得 ViewPager Swipe
目前我只能在我向上移动手指而不在TouchEvent上滑动时才能获得滑动
下面是我的 XML 代码片段
<Button
android:id="@+id/slide_btn_speak"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@android:drawable/ic_btn_speak_now"
android:contentDescription="@string/app_name" />
<TextView
android:id="@+id/slide_txtView_inside"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/slide_btn_speak"
android:text="@string/app_name" />
<android.support.v4.view.ViewPager
android:id="@+id/ui_pager"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/slide_btn_speak"
android:layout_toRightOf="@+id/slide_btn_speak"
android:scrollbars="horizontal" >
</android.support.v4.view.ViewPager>
<Button
android:id="@+id/slide_btn_drag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@android:drawable/ic_btn_speak_now"
android:contentDescription="@string/app_name" />
我的活动片段...
public class SlidingActitvity extends Activity {
ViewPager viewPager;
Button slide_button_start ;
Vibrator vibrator;
static int count ;
int x_position, y_position;
String hint[] ={" SWIPE TO CANCEL " , ""};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sliding_actitvity);
viewPager = (ViewPager) findViewById(R.id.ui_pager);
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
slide_button_start = (Button) findViewById(R.id.slide_btn_drag);
slide_button_start.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
int viewPager_width = viewPager.getWidth();
x_position = (int) event.getX();
y_position = (int) event.getY();
if(x_position<= 0){
vibrator.cancel();
viewPager.bringToFront();
logIt("Touch..." +x_position +"..."+y_position);
}
break;
case MotionEvent.ACTION_DOWN:
vibrator.vibrate(100);
final Animation animation = AnimationUtils.loadAnimation(SlidingActitvity.this, R.anim.left);
ViewPagerAdapter adapter = new ViewPagerAdapter(SlidingActitvity.this , hint);
viewPager.setAdapter(adapter);
viewPager.setVisibility(ViewPager.VISIBLE);
viewPager.setAnimation(animation);
logIt("Touch...Down");
break;
case MotionEvent.ACTION_UP:
logIt("Touch...Up");
vibrator.cancel();
break;
case MotionEvent.ACTION_OUTSIDE:
logIt("Your are out...");
vibrator.cancel();
break ;
default:
break;
}
return true;
}
});
}
感谢任何答案...
【问题讨论】:
-
在按钮点击事件上使用方法 viewPager.setCurrentItem() 方法
-
@BirajZalavadia 我想在不抬起手指的情况下从 Button 移动到 ViewPager 时滑动 Viewpager……但我没有在 Button 上的 TouchEvent 上滑动
标签: android android-layout android-viewpager