Github最火开源项目-一分钟实现向左拖拽跳转详情页

自定义控件

  • 一分钟实现贴纸功能
  • 一分钟实现TextView高亮
  • 一分钟实现新手引导页
  • 一分钟实现ViewPager卡片
  • 一分钟实现加载对话框
  • 一分钟实现轮播图
  • 一分钟实现GridView拖拽
  • 一分钟实现底部导航栏
  • 一分钟实现底部FragmentTabhost
  • 一分钟实现多张图片选择
  • 一分钟实现仿美拍直播的点赞动画
  • 一分钟实现高仿今日头条视频列表
  • 一分钟实现购物车加减控件
  • 一分钟实现省市县三级联动
  • 一分钟实现二维码生成和扫描
  • 一分钟实现沉浸式状态栏
  • 一分钟实现图片裁剪
  • 一分钟实现视频弹幕
  • 一分钟实现图片缩放
  • 一分钟实现旋转选择器
  • 一分钟实现ofo小黄车的引导界面
  • 一分钟实现自定义ImageView外貌
  • 一分钟实现向左拖拽跳转详情页
  • 一分钟实现QQ首页动画特效
  • 一分钟实现ViewPager上下滑动

联网

  • 一分钟学会Retrofit并且进行实战
  • 一分钟实现OkHttp3

工具

  • 一分钟实现RecyclerView
  • 一分钟实现H5和Android通信
  • 一分钟实现pinyin4j
  • 一分钟实现分析内存泄漏

数据库

  • 一分钟实现LitePal数据库
  • 一分钟实现ormlite数据库
  • 一分钟实现GreenDao数据库

源码分析相关面试题

  • Volley源码分析
  • 注解框架实现原理
  • okhttp3.0源码分析
  • onSaveInstanceState源码分析
  • 静默安装和源码编译

Activity相关面试题

  • 保存Activity的状态
  • 深刻剖析activity启动模式(一)
  • 深刻剖析activity启动模式(二)
  • 深刻剖析activity启动模式(三)
  • Activity Task和Process之间的关系
  • 源码分析service开启Activity抛异常?activity不会抛异常
  • Activity优雅退出
  • onCreate源码分析

Service相关面试题

  • IntentService源码分析
  • Service是否在main thread中执行, service里面是否能执行耗时的操作?
  • Service不死之身

与XMPP相关面试题

  • XMPP协议优缺点
  • 极光消息推送原理

与性能优化相关面试题

  • 内存泄漏和内存溢出区别
  • UI优化和线程池实现原理
  • 代码优化
  • 内存性能分析
  • 内存泄漏检测
  • App启动优化
  • 与IPC机制相关面试题

与登录相关面试题

  • oauth认证协议原理
  • token产生的意义
  • 微信扫一扫实现原理

与开发相关面试题

  • 迭代开发的时候如何向前兼容新旧接口
  • 手把手教你如何解决as jar包冲突
  • context的原理分析
  • 解决ViewPager.setCurrentItem中间很多页面切换方案
  • 字体适配
  • 软键盘适配
  • 机型适配,例如三星、小米、华为、魅族等
  • CardView 设置水波纹效果

与人事相关面试题

  • 人事面试宝典

开源地址:https://github.com/open-android/DragFooterView
一个向左拖拽跳转至更多页面的通用控件

视频地址:http://www.toutiao.com/i6430937523953861122/

  • 详细的使用方法在DEMO里面都演示啦,如果你觉得这个库还不错,请赏我一颗star吧~~~

  • 欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频

微信公众号名称:Android干货程序员

Github最火开源项目-一分钟实现向左拖拽跳转详情页_第1张图片

自定义你自己的Footer效果

作为一个library,当然不能只支持以上那一种效果啦,所以,这个库的
Footer应该是可定制的,可插拔的。定制Footer只需定义一个继承自
BaseFooterDrawer的类,然后在参数中提供的区域中绘制即可,而其余
的事件分发,拦截都不需要关心。以下是我自己定制的两种Footer效果。

使用步骤

1. 在project的build.gradle添加如下代码(如下图)

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}
Github最火开源项目-一分钟实现向左拖拽跳转详情页_第2张图片

2. 在Module的build.gradle添加依赖

compile 'com.github.open-android:DragFooterView:0.1.0'

用法

1、在xml中配置如下 (注意:DragContainer只能有一个子View),RecyclerView向左拖拽

    

        
    

2、在java类中添加事件监听器DragListener

    DragContainer dragContainer = (DragContainer) findViewById(R.id.drag_recycler_view);
    
    //若需使用自己定制的footer,需要调用DragContainer的setFooterDrawer方法设置定制的footer类,如下
    dragContainer.setFooterDrawer(new ArrowPathFooterDrawer.Builder(this, 0xff444444).setPathColor(0xffffffff).build());
    
    dragContainer.setDragListener(new DragListener() {
        @Override
        public void onDragEvent() {
            //do whatever you want,for example skip to the load more Activity.
            Intent intent = new Intent(HomeActivity.this, ShowMoreActivity.class);
            startActivity(intent);
        }
    });
    @Override
    public void onDragEvent() {
        Intent intent = new Intent(HomeActivity.this, ShowMoreActivity.class);
        startActivity(intent);
    }

属性

attribute value type defalut value description
dc_footer_color color 0xffcdcdcd footer view的背景颜色
dc_reset_animator_duration integer 700 松开拖拽后复位动画的时长
dc_drag_damp float 0.5f 拖拽阻尼系数,取值在(0,1]之间,取值越小,阻尼越大
  • 细节注意:
    //若需使用自己定制的footer,需要调用DragContainer的setFooterDrawer方法设置定制的footer类,如下
    dragContainer.setFooterDrawer(new ArrowPathFooterDrawer.Builder(this, 0xff444444).setPathColor(0xffffffff).build());

其他控件用法 (HorizontalScrollView用法)



               

                   

               

            
 private void setupHorizontalScrollView() {
        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
        for (int i = 10; i < 20; i++) {
            ImageView imageView = new ImageView(this);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(dp2px(120), ViewGroup.LayoutParams.MATCH_PARENT);
            params.leftMargin = 0;
            params.rightMargin = dp2px(5);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setLayoutParams(params);
            linearLayout.addView(imageView);
            Glide.with(this).load(Constants.urls[i]).into(imageView);
        }

        DragContainer dragContainer = (DragContainer) findViewById(R.id.drag_scroll_view);
        BaseFooterDrawer drawer = new com.fangxu.dragfooterview.customfooters.ArrowPathFooterDrawer.Builder(this, 0xff444444).setPathColor(0xffffffff).build();
        dragContainer.setFooterDrawer(drawer);
        dragContainer.setDragListener(this);
    }

(ImageView用法)



               

           
 private void setupImageView() {
       ImageView imageView = (ImageView) findViewById(R.id.image_view);
       Glide.with(this).load(Constants.urls[0]).into(imageView);

       DragContainer dragContainer = (DragContainer) findViewById(R.id.drag_image_view);
       dragContainer.setFooterDrawer(new BezierFooterDrawer.Builder(this, 0xffffc000).setIconDrawable(getResources().getDrawable(R.drawable.left)).build());
       dragContainer.setDragListener(this);
   }

(TextView, Button用法)

  
   

               

                   

               

               

                   
private void setupTextView() {
       DragContainer dragContainer = (DragContainer) findViewById(R.id.drag_text_view);
       dragContainer.setDragListener(this);
   }

   private void setupButton() {
       Button button = (Button) findViewById(R.id.button);
       button.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Toast.makeText(HomeActivity.this, "onClick", Toast.LENGTH_SHORT).show();
           }
       });
       button.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
           public boolean onLongClick(View v) {
               Toast.makeText(HomeActivity.this, "onLongClick", Toast.LENGTH_SHORT).show();
               return true;
           }
       });

       DragContainer dragContainer = (DragContainer) findViewById(R.id.drag_button);
       dragContainer.setDragListener(this);
   }
       

你可能感兴趣的:(Github最火开源项目-一分钟实现向左拖拽跳转详情页)