zoukankan      html  css  js  c++  java
  • Android碎纸机效果

    1.总体思想

       活用padding和margin

    2.实现过程

     1 public class PopupShredderView extends FrameLayout{
     2     public PopupShredderView(Context context, AttributeSet attrs, int defStyle) {
     3 
     4         super(context, attrs, defStyle);
     5         init();
     6     }
     7 
     8     public PopupShredderView(Context context, AttributeSet attrs) {
     9 
    10         super(context, attrs);
    11     init() ;    
    12     }
    13 
    14     public PopupShredderView(Context context) {
    15 
    16         super(context);
    17     init();
    18     }
    19 
    20 
    21     private void init(){
    22       final LayoutInflater layoutInflater = LayoutInflater.from(context);
    23       mView = layoutInflater.inflate(R.layout.popup_shredder_clean, this, false);
    24 
    25       mCleanText1.setImageDrawable(themeManager.getDrawable(R.drawable.exit_clean_date));
    26       mCleanText2.setBackgroundDrawable(themeManager.getDrawable(R.drawable.exit_clean_result));
    27       mCleanText2.setVisibility(View.INVISIBLE);
    28     }
    29 
    30     public void update(int step, int offset){
    31             if (step == STEP_END) {
    32                    return;
    33                }
    34         int clean1Offset = mCleanText1.getMeasuredHeight() * step / STEP_END;
    35         int maxClean1Offset=mCleanText1.getMeasuredHeight();
    36         if (offset + clean1Offset < maxClean1Offset) {
    37             clean1Offset = clean1Offset + offset;
    38         } else {
    39             clean1Offset = maxClean1Offset;
    40         }
    41         mCleanText1.setPadding(0, clean1Offset, 0, 0);
    42         mCleanText2.setVisibility(View.VISIBLE);
    43         int clean2Offset = ((View) mCleanText2.getParent()).getMeasuredHeight() * (STEP_END - step)
    44                 / STEP_END;
    45         int maxClean2Offset= 0;
    46         if (clean2Offset - offset > maxClean2Offset) {
    47             clean2Offset = clean2Offset - offset;
    48         } else {
    49             clean2Offset = maxClean2Offset;
    50         }
    51         LinearLayout.LayoutParams layoutParams = (android.widget.LinearLayout.LayoutParams) mCleanText2
    52                 .getLayoutParams();
    53         layoutParams.bottomMargin = clean2Offset;
    54         mCleanText2.setLayoutParams(layoutParams);
    55         invalidate();
    56     }
    57 
    58 }

    3.布局文件

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:id="@+id/menubar"
     4     android:layout_width="192dp"
     5     android:layout_height="wrap_content"
     6     android:layout_gravity="center"
     7     android:orientation="vertical" >
     8 
     9     <ImageView
    10         android:id="@+id/exit_clean1"
    11         android:layout_width="wrap_content"
    12         android:layout_height="@dimen/popup_shredder_top_heigh"
    13         android:layout_gravity="center_horizontal"
    14         android:layout_marginLeft="21dp"
    15         android:contentDescription="@string/app_name"
    16         android:scaleType="matrix" />
    17 
    18     <LinearLayout
    19         android:layout_width="wrap_content"
    20         android:layout_height="@dimen/popup_shredder_top_heigh"
    21         android:layout_marginLeft="28dp"
    22         android:layout_marginTop="@dimen/popup_shredder_bottom_top_margin"
    23         android:orientation="vertical" >
    24 
    25         <ImageView
    26             android:id="@+id/exit_clean2"
    27             android:layout_width="wrap_content"
    28             android:layout_height="match_parent"
    29             android:layout_gravity="center_horizontal"
    30             android:contentDescription="@string/app_name" />
    31     </LinearLayout>
    32 
    33     <ImageView
    34         android:id="@+id/exit_clean3"
    35         android:layout_width="wrap_content"
    36         android:layout_height="@dimen/popup_shredder_delete_heigh"
    37         android:layout_gravity="center_horizontal"
    38         android:layout_marginTop="@dimen/popup_shredder_delete_top_margin"
    39         android:contentDescription="@string/app_name" />
    40 
    41 </RelativeLayout>
    View Code
  • 相关阅读:
    CCNode作为容器实现显示区域剪裁
    使用CCNode作为容器容易踩的坑
    走了很多弯路的CCScrollView
    常用es6特性归纳-(一般用这些就够了)
    WebP图片优化
    es6 Promise 异步函数调用
    网站性能优化
    dom元素分屏加载
    js顺序加载与并行加载
    移动端真机调试
  • 原文地址:https://www.cnblogs.com/lchd/p/3471198.html
Copyright © 2011-2022 走看看