欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android仿QQ未读消息--红点拖拽删除【源代码】

程序员文章站 2022-05-07 11:30:44
本demo是一款仿qq未读消息拖拽删除的例子,继承relativelayout的waterdrop实现了圆形图标功能、继承imageview的circleimageview...

本demo是一款仿qq未读消息拖拽删除的例子,继承relativelayout的waterdrop实现了圆形图标功能、继承imageview的circleimageview圆形图片功能、效果非常不错、很适合有圆形设计的哥们、效果图片如下

Android仿QQ未读消息--红点拖拽删除【源代码】

circleimageview核心代码

private void updateshadermatrix() {
 float scale;
 float dx = 0;
 float dy = 0;
 mshadermatrix.set(null);
 if (mbitmapwidth * mdrawablerect.height() > mdrawablerect.width()
  * mbitmapheight) {
 scale = mdrawablerect.height() / (float) mbitmapheight;
 dx = (mdrawablerect.width() - mbitmapwidth * scale) * 0.5f;
 } else {
 scale = mdrawablerect.width() / (float) mbitmapwidth;
 dy = (mdrawablerect.height() - mbitmapheight * scale) * 0.5f;
 }
 mshadermatrix.setscale(scale, scale);
 mshadermatrix.posttranslate((int) (dx 0.5f) mborderwidth,
 (int) (dy 0.5f) mborderwidth);

 mbitmapshader.setlocalmatrix(mshadermatrix);
}

waterdrop核心代码

public boolean ontouchevent(motionevent event) {
 viewgroup parent = getscrollableparent();
 switch (event.getaction()) {
 case motionevent.action_down:
 mholdereventflag = !covermanager.getinstance().isrunning();
 if (mholdereventflag) {
  parent.requestdisallowintercepttouchevent(true);
  covermanager.getinstance().start(this, event.getrawx(), 
  event.getrawy(), mondragcompetelistener);
 }
 break;
 case motionevent.action_move:
 if (mholdereventflag) {
  covermanager.getinstance().update(event.getrawx(),
  event.getrawy());
 }
 break;
 case motionevent.action_up:
 case motionevent.action_cancel:
 if (mholdereventflag) {
  parent.requestdisallowintercepttouchevent(false);
  covermanager.getinstance().finish(this, event.getrawx(),
  event.getrawy());
 }
 break;
 }
 return true;
}

最后给贴上demo的源代码,有兴趣的朋友可以下载看看

http://pan.baidu.com/s/1ku8ogl5

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!