闲着无聊,提前请假回家闭关学习。。。

先看效果图:

该DEMO 是我网上找的,比较喜欢这个动画效果,就自己动手实现了一遍,原理不难,但是真正理解使用起来也不简单。

一:自定义Dialog

当你点击按钮“点击我”时,屏幕下面自动弹出对话框,对话框内有三个按钮。而如何自定义这三个按钮呢具体代码如下:

 1 private void dianji() {
 2         View view= getLayoutInflater().inflate(R.layout.choss,null);
 3         Dialog  dialog=new Dialog(this,R.style.transparentFrameWindowStyle);
 4         dialog.setContentView(view,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 5
 6         Window  window=dialog.getWindow();
 7         //设置显示动画
 8         window.setWindowAnimations(R.style.main_menu_animstyle);
 9         WindowManager.LayoutParams wl=window.getAttributes();
10         wl.x = 0;
11         wl.y = getWindowManager().getDefaultDisplay().getHeight();
12         // 以下这两句是为了保证按钮可以水平满屏
13         wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
14         wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
15         dialog.onWindowAttributesChanged(wl);
16         dialog.setCanceledOnTouchOutside(true);
17         dialog.show();
18
19     }

这一部分比较简单,但如果细心观察回发现对话框的四个角都是有弧度的,这个就需要另一个知识点了,请看下面。

二:ShapeDrawable资源

所谓的ShapeDrawable资源其实就是用来定义基本的集合图形(矩形,圆形,线条灯),它的根元素是<shape..../>

它有几个子元素:

solid:填充

android:color指定填充的颜色

gradient:渐变

android:startColor和android:endColor分别为起始和结束颜色,

android:angle是渐变角度,必须为45的整数倍。

corners:圆角

android:radius为角的弧度,值越大角越圆。

padding:间隔

而我们这次的DEMO中所需要的就仅仅是增减死角的弧度,那么可以直接新建这个XML,然后加入以下代码即可。

当完成以上操作时,死角圆弧就应该出来了。那接下去要做的就是弹出动画了。

三:弹出动画

这个功能需要用的是AnimationDrawable资源了。何为AnimationDrawable我就不解释了,具体请百度,而在本demo中如何操作以及使用呢,请继续往下看

首先你得先在res目录下新建一个anmi的文件夹即:/res/anmi。

然后再里面新建根元素为set的XML。

为什么要2个XML呢,那是因为一个弹出动画,一个收入动画。

AnimationDrawable下有4个子元素

alpha:设置透明度的改变

scale:设置图片进行缩放变换

translate:设置图片进行位移变换

rotate:设置图片进行旋转

大致的内容就是上面这些,但是还有一些注意点:

如果你使用的是AS来开发,新手有可能会遇到一些问题:

编译时APP的主题报错:请删除Androidmanifest文件中android:theme="@style/AppTheme" >这一行,但是相对的仍会报错说需要指定主题,那就请回到MainActivity中来,选择引用Active,而不是AS给你默认的ActionBarActivity,然后按alt+enter键,把需要的包引用进来。

还有如果出现“Failure [INSTALL_FAILED_OLDER_SDK] ”错误的话,请删除Androidmanifest文件中<uses-sdk android:minSdkVersion="4" />这一行,然后选择SDK等级比你项目高的模拟器来运行。

项目代码:http://pan.baidu.com/s/1dDhEujR

再次重申,此demo是我网上下载的,具体作者是谁,我未去深究,本着分享的原则分享给大家,如果有任何版权问题,请联系我删除。

转载于:https://www.cnblogs.com/liu-nian-2014/p/4183499.html

使用Android studio完成”仿QQ的头像选择弹出的对话框“步骤及知识梳理相关推荐

  1. android选择头像弹窗,仿QQ的头像选择弹出的对话框

    这个例子是点击按钮后,选择菜单会从屏幕底部慢慢弹出来,按菜单以外的屏幕,菜单会消失. 先看一下效果吧. 对话框布局xml文件如下: android:layout_width="match_p ...

  2. 自定义Dialog(QQ头像选择弹出的对话框)

    运行效果:                              一 资源准备: 1.弹出的按钮: (1)图库按钮(drawable中)-上角有弧度 正常状态:gallery_normal.xml ...

  3. android qq右上加号,仿QQ空间点击加号弹出菜单特效

    最近项目需要,前几天写了一个仿微信相册(包括编辑相册)功能,审核代码的时候发现同事要实现一个类似仿QQ空间点击加号弹出菜单特效,于是看了一些他的代码,我发现虽然他实现了功能,但是不够完善,所以我又花了 ...

  4. android+底部评论框,Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)...

    实现的效果图: 自定义Fragment继承BottomSheetDialogFragment 重写它的三个方法: onCreateDialog() onCreateView() onStart() 他 ...

  5. 网页显示QQ在线点击弹出聊天对话框代码

    QQ留言: <div> <a target="blank" href="http://wpa.qq.com/msgrd?V=1&Uin=3732 ...

  6. 仿QQ设置头像(拍照/选择照片)

    仿QQ设置头像(拍照/选择照片) 这是一个很常见的需求,即选择照片作为头像或者拍照作为头像,实现起来不算太复杂,但是融合的知识点还是比较多的,这里记一下供以后回顾以及给有需要的人作为参考. 目前就是这 ...

  7. android登录操作代码,Android Studio实现第三方QQ登录操作代码

    来看看效果图吧 实现QQ登录了, 新建一个项目工程 ,然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中 导入一个下面架包就可以 项目结构如下 打开我们的清单文件And ...

  8. Android开发之仿QQ表情实现(上)

    大家晚上好,,小鹿又来了..最近小鹿特别忙,忙到没时间发表博客了(注:以下内容过于简单请大家不要喷,仅提供初学者学习) 今天发表两篇文章,分别是讲解模拟QQ表情的实现,先给大家看效果图,,,, 开始了 ...

  9. android的动态tab,Android自定义view仿QQ的Tab按钮动画效果(示例代码)

    话不多说 先上效果图 实现其实很简单,先用两张图 一张是背景的图,一张是笑脸的图片,笑脸的图片是白色,可能看不出来.实现思路:主要是再触摸view的时候同时移动这两个图片,但是移动的距离不一样,造成的 ...

最新文章

  1. 综述系列 | 多标签学习的新趋势
  2. android socket io和服务器_Java socket通讯服务器和客户端教学版
  3. spring定时器突然不执行了_编程中常常遇到了定时器不工作的问题分析
  4. C# 得到本机局域网IP地址
  5. 两个或者多个图片上下之间有空隙
  6. 关于上篇文章的okhttp中对于onFailure回调的异常捕获
  7. java关键字保留字_Java这个关键字
  8. golang gin解决跨域:编写一个全局中间件
  9. WireShark下载:官网、源码
  10. Python爬虫马蜂窝结伴信息
  11. c语言装b程序,C语言打造表白和装逼利器:亲爱的让我们相爱在一起,酷炫的梦幻...
  12. 陕西计算机中考考试,2018年陕西省中考考试时间及科目安排公布
  13. 7T, 9T and Track
  14. 作为学科的计算机科学(COMPUTING AS A DISCIPLINE)
  15. 《学Unity的猫》——第九章:状态机与Unity协程,好奇猫与铁皮怪水管
  16. 生产过程监控没有你想象那么难!
  17. 基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析.doc
  18. 价值100亿美元!微软刚刚击败亚马逊,拿下美国国防部十年云计算基建订单
  19. thinkphp6 think-queue消息队列
  20. python自动爬取快看漫画并发布至头条号(没编程基础也可学会)

热门文章

  1. 我们遇到困难怎么办?
  2. mysql一个死锁分析
  3. oracle数据库学习相关笔记-转换函数
  4. LeetCode算法题-Reverse Linked List(Java实现)
  5. 巨杉数据库完成数千万美元C轮融资,嘉实投资领投
  6. Vue中添加新的路由并访问
  7. mysql 中 replace into 与 insert into on duplicate key update 的使用和不同点
  8. 怎样脱离屌丝程序猿的身份
  9. OWASP Webgoat 安装和使用
  10. 【Python】unicode' object is not callable