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


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

先看效果图:

 

该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是我网上下载的,具体作者是谁,我未去深究,本着分享的原则分享给大家,如果有任何版权问题,请联系我删除。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM