CoordinatorLayout+AppBarLayout的简单使用及解决滑动抖动问题

CoordinatorLayout+AppBarLayout的简单使用及解决滑动抖动问题

2023年7月13日发(作者:)

CoordinatorLayout+AppBarLayout的简单使⽤及解决滑动抖动问题第⼀步: 导⼊相应的design包1 dependencies {2 ......3 implementation 't:design:27.1.0'4 }第⼆步:布局⽂件 1 9

10 13

14 19

20 25 26 30 31 第⼆步:初始化 Recyclerview 1 /** 2 * @author Sigal 3 * on 2018/10/28 4 * note: 5 */ 6 public class MainActivity extends AppCompatActivity { 7 private RecyclerView recyclerView; 8 private ArrayList mDataList; 9

10 @Override11 protected void onCreate(Bundle savedInstanceState) {12 te(savedInstanceState);13 setContentView(ty_main);14 initData();15 initRecycView();16 }17

18 private void initRecycView() {19 recyclerView = findViewById(erview);20 outManager(new LinearLayoutManager(,21 AL, false));22 pter(new TextviewAdapter());23

24 }25

26 private void initData() {27 mDataList = new ArrayList<>();28 for (int i = 0; i < 26; i++) {29 ("测试数据" + i);30 }31 }32

33 public class TextviewAdapter extends r{34 35 @NonNull36 @Override37 public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {38 View view = (text()).inflate(eview_item, parent, false);39 return new ViewHolder(view);40 }41

42 @Override43 public void onBindViewHolder(@NonNull ViewHolder holder, int position) {44 t((position));45 }46

47 @Override48 public int getItemCount() {49 return ();50 }51

52 class ViewHolder extends lder{53 private final TextView mText;54

55 public ViewHolder(View itemView) {56 super(itemView);57 mText = ewById(ew);58 }59 }60 }61 }

第三步:解决滑动抖动问题 1 /** 2 * @author Sigal 3 * on 2018/11/26 4 * note: 解决AppBarLayout滑动时抖动问题 5 */ 6 public class FixAppBarLayout extends or { 7 private static final String TAG = "AppBarLayoutBehavior"; 8

9 public FixAppBarLayout() {10 super();11 }12

13 public FixAppBarLayout(Context context, AttributeSet attrs) {14 super(context, attrs);15 }16

17 @Override18 public boolean onInterceptTouchEvent(CoordinatorLayout parent, AppBarLayout child, MotionEvent ev) {19 if (ion() == ACTION_DOWN) {20 Object scroller = getSuperSuperField(this, "mScroller");21 if (scroller != null && scroller instanceof OverScroller) {22 OverScroller overScroller = (OverScroller) scroller;23 nimation();24 }25 }26

27 return rceptTouchEvent(parent, child, ev);28 }29

30 private Object getSuperSuperField(Object paramClass, String paramString) {31 Field field = null;32 Object object = null;33 try {34 field = ss().getSuperclass().getSuperclass().getDeclaredField(paramString);35 essible(true);36 object = (paramClass);37 } catch (Exception e) {38 tackTrace();39 }40 return object;41 }42 }注:在布局⽂件中引⽤:app:layout_behavior="BarLayout"

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689215439a222195.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信