念念手帐是什么软件-念念手帐的隐藏功能

念念手帐是什么软件-念念手帐的隐藏功能
浏览 (195)
  • 类型:
  • 更新:2024-07-17
  • 大小:303M
  • 所需权限:查看
  • 隐私政策:查看
列表控件 念念手帐(https://m.nnzhp.cn/article7288.html) 中,我们实现了摘要列表控件,这里就给大家分享下这个控件的实现方式。 创建一个简单的项目 : !(https://upload-images.jianshu.io/upload_images/1708447-537c0885cdae38d8.gif?imageMogr2/auto-orient/strip) 1.首先,我们需要一个 LinearLayout 做为容器 ``` ``` 2.添加一张笔记缩略图 ``` private int mImgId; public void setImgId(int imgId){ mImgId = imgId; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_summary_item); ButterKnife.bind(this); ivImg.setImageResource(mImgId); } ``` 3.基类摘要 item 定义 Layout 和单头图片; 手指左右滑动删除、宽度自动匹配,高度自动包裹 ``` ``` 3.实现左右滑动功能 创建一个基类bean !(https://upload-images.jianshu.io/upload_images/1708447-1c070ae45a0268ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 做个标记变量,判断是否打开删除;利用回调监听手指滑动的方向。 ``` /** * 是否需要打开删除功能,当屏幕触摸了条目右侧位置时打开 */ public boolean isNeedInstance = false; /** * 区别用户是手已经放开,还是还在滑动 */ public boolean isUp = false; ``` ``` /** * 监听手指滑动方向的回调接口(以左下为标准) */ public interface onScrollStateChangedListener { public void onScrollPosition(boolean isScrollLeft); } ``` 实现左滑删除功能,利用属性动画实现 ``` public void disPlayDelete(boolean isInstance) { if(isInstance) { //左滑删除 //ObjectAnimator.ofObject(view,"parms1" .. "parms2");** keyFrame lparams = (RelativeLayout.LayoutParams) rlBackground.getLayoutParams(); if(View.MEASURED_STATE_MASK != lparams.leftMargin) { lparams.leftMargin=View.MEASURED_SIZE_MASK; rlBackground.setLayoutParams(lparams); } ObjectAnimator anim = ObjectAnimator.ofInt(lparams,"leftMargin",View.MEASURED_SIZE_MASK,dip2px(-60)); anim.setDuration(260); anim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { rlBackground.setVisibility(View.INVISIBLE); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); anim.start(); } } ``` 4.确保一个能接收到滑动方向的 Activity 创建一个抽象公共的 activity ``` public abstract class SummaryActivity extends AppCompatActivity implements onScrollStateChangedListener { //手指往左滑动 - true public boolean isScrollLeft = true; @Override public void onScrollPosition(boolean isScrollLeft) { this.isScrollLeft = isScrollLeft; } } ``` 5.添加的方法 ``` /** * 初始化布局 */ protected void init() { LayoutInflater inflater = LayoutInflater.from(getContext()); View view = inflater.inflate(R.layout.activity_summary_item, this); ButterKnife.bind(view);//注释掉 ivImg.setOnTouchListener(this); } @Override public boolean onTouch(View v, MotionEvent event) { if(!isNeedInstance && !isUp) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: if(!isNeedInstance) break; // 手指向右滑动时 if (isScrollLeft) { // 右滑需要在这里添加逻辑处理 ModuleSummaryBean onSummaryListener = viewHolder.getOnSummaryListener(); if(onSummaryListener != null ) { onSummaryListener.disPlayDelete(true); } } // 手指向左滑动时 else { // 左滑需要在这里添加逻辑处理 ModuleSummaryBean onSummaryListener = viewHolder.getOnSummaryListener(); if(onSummaryListener != null ) { onSummaryListener.disPlayDelete(false); } } isUp = false; break; case MotionEvent.ACTION_UP: isUp = true; break; } return true; } ``` 6.最后使用 ``` viewHolder.getOnSummaryListener().setImgId(OrderInfoState.water); ``` 当你需要在 summary text 不一样的时候,你可以自己再创建一个子类,只需调用 super.init() 即可。其他功能控件处理同样的方式 ``` ``` 常见的抽取一个基础的 ModuleTreeBean 即可, 避免重复定义
安卓版下载

同类推荐更多

专题合集更多>>

海战棋2中文版下载-海战棋2中文版 网易云游戏官方平台光遇-网易云游戏官方平台 神庙逃亡1原版下载-神庙逃亡1原版 红人阁快手互赞软件最新版-红人阁快手互赞软件