使用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