Android中FoldingLayout折叠布局的用法及实战全攻略

2019-12-10 18:55:43于丽

恩,Activity里面什么都不用做,引入布局文件就行了。
最好看看效果图。
3、效果图

Android中FoldingLayout折叠布局的用法及实战全攻略

这里菜单块数比较多,大家可以自行修改运行。
ok,到此我们将FoldLayout与SlidingPaneLayout进行了整合,构造了这么个个性的侧滑。
最好还剩下与Drawerlayout的整合。

九、FoldDrawerLayout
1、实现
关于DrawerLayout的使用,与上面的SlidingPaneLayout类似,写写布局文件,引入Activity就好了。我们依然使用上述的方法2,去实现一个DrawerLayout的子类。

package com.zhy.view; 
 
import android.content.Context; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.view.ViewCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
 
public class FoldDrawerLayout extends DrawerLayout 
{ 
  private static final String TAG = "DrawerFoldLayout"; 
 
  public FoldDrawerLayout(Context context, AttributeSet attrs) 
  { 
    super(context, attrs); 
  } 
 
  @Override 
  protected void onAttachedToWindow() 
  { 
    super.onAttachedToWindow(); 
 
    final int childCount = getChildCount(); 
    for (int i = 0; i < childCount; i++) 
    { 
      final View child = getChildAt(i); 
      if (isDrawerView2(child)) 
      { 
        Log.e(TAG, "at" + i); 
        FoldLayout foldlayout = new FoldLayout( 
            getContext()); 
        //<span style="font-family: Arial, Helvetica, sans-serif;">foldlayout</span><span style="font-family: Arial, Helvetica, sans-serif;">.setAnchor(1);</span> 
        removeView(child); 
        foldlayout.addView(child); 
        ViewGroup.LayoutParams layPar = child.getLayoutParams(); 
        addView(foldlayout, i, layPar); 
      } 
 
    } 
    setDrawerListener(new DrawerListener() 
    { 
 
      @Override 
      public void onDrawerStateChanged(int arg0) 
      { 
        // TODO Auto-generated method stub 
 
      } 
 
      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) 
      { 
 
        if (drawerView instanceof FoldLayout) 
        { 
          FoldLayout foldLayout = ((FoldLayout) drawerView); 
          Log.e(TAG, "slideOffset = " + slideOffset); 
          foldLayout.setFactor(slideOffset); 
        } 
 
      } 
 
      @Override 
      public void onDrawerOpened(View arg0) 
      { 
 
      } 
 
      @Override 
      public void onDrawerClosed(View arg0) 
      { 
 
      } 
    }); 
 
  } 
 
  boolean isDrawerView2(View child) 
  { 
    final int gravity = ((LayoutParams) child.getLayoutParams()).gravity; 
    final int absGravity = GravityCompat.getAbsoluteGravity(gravity, 
        ViewCompat.getLayoutDirection(child)); 
    return (absGravity & (Gravity.LEFT | Gravity.RIGHT)) != 0; 
  } 
 
}