大佬教程收集整理的这篇文章主要介绍了android – 将滚动事件传递到另一个视图,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是xml布局:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://scheR_430_11845@as.android.com/apk/res/android" xmlns:app="http://scheR_430_11845@as.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="420dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim="?attr/colorPriMary" app:expandedtitleMarginStart="48dp" app:expandedtitleMarginEnd="64dp" android:fitsSystemWindows="true"> <android.support.v4.view.ViewPager xmlns:android="http://scheR_430_11845@as.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.8" android:fitsSystemWindows="true" app:layouT_Behavior="@String/appbar_scrolling_view_behavior" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.nestedScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" android:cliPTOPadding="false" app:layouT_Behavior="@String/appbar_scrolling_view_behavior"> <include layout="@layout/activity_item_detail" /> </android.support.v4.widget.nestedScrollView> <android.support.design.widget.FloaTingActionButton android:id="@+id/fab_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_vertical_margin" android:clickable="true" android:src="@android:drawable/ic_menu_call" app:layout_anchor="@+id/appbar" app:layout_anchorGravity="bottom|right|end" style="@style/floaTing_action_button" /> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer"/> </android.support.v4.widget.DrawerLayout>
@H_404_2@
如果触摸任何除了viewpager /工具栏之外的任何内容,滚动内容.@H_404_2@我也需要在浏览页面上垂直触摸和滚动滚动体验.@H_404_2@已经尝试覆盖ViewTager的onTouchEvent,将ACTION_UP运动事件传递给scroll_view.
nestedScrollView.post(new Runnable() { @Override public void run() { mPager.setOnTouchListener(new View.onTouchListener() { @Override public Boolean onTouch(View v,MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_Up) { return nestedScrollView.onTouchEvent(event); } else { return v.onTouchEvent(event); } } }); } });
以这种方式,您可以管理在外部视图上执行的所有手势,您可以以某种方式对手势做出反应.@H_404_2@注意:当您扩展GestureDetector.SimpLeonGestureListener时,请注意覆盖onDown方法,否则将不会得到任何其他事件.
编辑
我已经在这个github project测试了我的建议.如果您以这种方式修改了CheeseDetailActivity,那么当您在奶酪图像中滚动时,您将获得调用的onScroll事件.
public class CheeseDetailActivity extends AppCompatActivity { public static final String EXTRA_NAME = "cheese_name"; private GestureDetectorCompat mDetector; @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_detail); MyGestureListener listener = new MyGestureListener(); mDetector = new GestureDetectorCompat(this,new MyGestureListener()); View root = findViewById(R.id.pager); root.setOnTouchListener(new View.onTouchListener() { @Override public Boolean onTouch(View v,MotionEvent event) { return mDetector.onTouchEvent(event); } }); Intent intent = geTintent(); final String cheesename = intent.getStringExtra(EXTRA_Name); final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); collapsingToolbar.settitle(cheeseName); loadBACkdrop(); } private void loadBACkdrop() { final ImageView imageView = (ImageView) findViewById(R.id.BACkdrop); Glide.with(this).load(Cheeses.getRandomCheeseDrawable()).centerCrop().into(imageView); } @Override public Boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.sample_actions,menu); return true; } class MyGestureListener extends GestureDetector.SimpLeonGestureListener { private static final String DEBUG_TAG = "Gestures"; @Override public Boolean onDown(MotionEvent event) { Log.d(DEBUG_TAG,"onDown: " + event.toString()); return true; } @Override public Boolean onScroll(MotionEvent e1,MotionEvent e2,float distanceX,float distanceY) { Log.d(DEBUG_TAG,"onScroll: "); //Implement functionality you want e.g. horiontal scroll changes viewpager item,vertical scroll collpases the toolbar return true; } } }
以上是大佬教程为你收集整理的android – 将滚动事件传递到另一个视图全部内容,希望文章能够帮你解决android – 将滚动事件传递到另一个视图所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。