简仿Path的商店表情弹出模块

来源:互联网 发布:dj姆本加数据 编辑:程序博客网 时间:2024/06/05 09:50

很简单的一个效果,我只实现了一个大致样式,需要的朋友可以拿到源码后自己修改布局。

Path真的是用户界面设计的标杆,做了很多很漂亮的细节处理。

先看一下样子:



关键代码就在于View的叠加和动画

[java] view plaincopy
  1. public class MainActivity extends Activity {  
  2.     RelativeLayout ll;  
  3.     LayoutInflater li;  
  4.   
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.activity_main);  
  9.   
  10.         WindowManager wm;  
  11.         ll = (RelativeLayout) findViewById(R.id.text);  
  12.         View rootView = getWindow().getDecorView().findViewById(  
  13.                 android.R.id.content);  
  14.         li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  15.   
  16.         Button btn = (Button) findViewById(R.id.btns);  
  17.         btn.setOnClickListener(new OnClickListener() {  
  18.             @Override  
  19.             public void onClick(View arg0) {  
  20.                 click();  
  21.             }  
  22.         });  
  23.     }  
  24.   
  25.     private void click() {  
  26.         final View bgView = li.inflate(R.layout.ad_bg, null);  
  27.         LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,  
  28.                 LayoutParams.MATCH_PARENT);  
  29.         ll.addView(bgView, lp);  
  30.   
  31.         final View adView = li.inflate(R.layout.ad, null);  
  32.         RelativeLayout.LayoutParams lp4 = new RelativeLayout.LayoutParams(  
  33.                 ViewGroup.LayoutParams.WRAP_CONTENT,  
  34.                 ViewGroup.LayoutParams.WRAP_CONTENT);  
  35.         lp4.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);  
  36.         ll.addView(adView, lp4);  
  37.   
  38.         adView.startAnimation(AnimationUtils.loadAnimation(this,  
  39.                 R.anim.view_fade_in));  
  40.   
  41.         bgView.setOnClickListener(new OnClickListener() {  
  42.             @Override  
  43.             public void onClick(View v) {  
  44.                 Animation anim = AnimationUtils.loadAnimation(  
  45.                         MainActivity.this, R.anim.view_fade_out);  
  46.                 anim.setAnimationListener(new AnimationListener() {  
  47.   
  48.                     @Override  
  49.                     public void onAnimationStart(Animation arg0) {  
  50.   
  51.                     }  
  52.   
  53.                     @Override  
  54.                     public void onAnimationRepeat(Animation arg0) {  
  55.   
  56.                     }  
  57.   
  58.                     @Override  
  59.                     public void onAnimationEnd(Animation arg0) {  
  60.                         ll.removeView(adView);  
  61.                         ll.removeView(bgView);  
  62.                     }  
  63.                 });  
  64.                 adView.startAnimation(anim);  
  65.             }  
  66.         });  
  67.   
  68.         adView.setOnClickListener(new OnClickListener() {  
  69.             @Override  
  70.             public void onClick(View v) {  
  71.   
  72.             }  
  73.         });  
  74.     }  
  75.   
  76. }  


view_fade_in.xml

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <translate  
  5.         android:duration="25000"  
  6.         android:fromXDelta="-10.0%p"  
  7.         android:fromYDelta="-100.0%p"  
  8.         android:toXDelta="0.0"  
  9.         android:toYDelta="0.0" />  
  10.   
  11.     <rotate    
  12.         android:fromDegrees="-10"    
  13.         android:toDegrees="0"    
  14.         android:duration="25000"    
  15.         android:repeatCount="0"    
  16.         android:pivotX="50%"    
  17.         android:pivotY="50%" />    
  18. </set>  

view_fade_out.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <translate  
  5.         android:duration="15000"  
  6.         android:fromYDelta="0.0"  
  7.         android:toYDelta="100.0%p" />  
  8.   
  9. </set>  

源码下载:

http://download.csdn.net/detail/h3c4lenovo/6571147

0 0