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

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

简单看一下该方法的参数,src代表变换前的坐标;dst代表变换后的坐标;从src到dst的变换,可以通过srcIndex和dstIndex来制定第一个变换的点,一般可能都设置位0。pointCount代表支持的转换坐标的点数,最多支持4个。
如果不明白没事,下面通过一个简单的例子,带大家了解:

package com.zhy.sample.folderlayout; 
 
import android.app.Activity; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Matrix; 
import android.os.Bundle; 
import android.view.View; 
 
public class MatrixPolyToPolyActivity extends Activity 
{ 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) 
  { 
    super.onCreate(savedInstanceState); 
    setContentView(new PolyToPolyView(this)); 
  } 
 
  class PolyToPolyView extends View 
  { 
 
    private Bitmap mBitmap; 
    private Matrix mMatrix; 
 
    public PolyToPolyView(Context context) 
    { 
      super(context); 
      mBitmap = BitmapFactory.decodeResource(getResources(), 
          R.drawable.tanyan); 
      mMatrix = new Matrix(); 
      float[] src = { 0, 0,// 
          mBitmap.getWidth(), 0,// 
          mBitmap.getWidth(), mBitmap.getHeight(),// 
          0, mBitmap.getHeight() }; 
      float[] dst = { 0, 0,// 
          mBitmap.getWidth(), 100,// 
          mBitmap.getWidth(), mBitmap.getHeight() - 100,// 
          0, mBitmap.getHeight() }; 
      mMatrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1); 
    } 
 
    @Override 
    protected void onDraw(Canvas canvas) 
    { 
      super.onDraw(canvas); 
      canvas.drawBitmap(mBitmap, mMatrix, null); 
    } 
 
  } 
 
} 

我们编写了一个PolyToPolyView作为我们的Activity的主视图。
在PolyToPolyView中,我们加载了一张图片,初始化我们的Matrix,注意src和dst两个数组,src就是正常情况下图片的4个顶点。dst将图片右侧两个点的y坐标做了些许的修改。
大家可以在纸上稍微标一下src和dst的四个点的位置。
最后我们在onDraw的时候进行图像的绘制,效果为:

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