@H_
673_9@
package co
m.flection.view;
import co
m.flection.main.R;
import android.
Annotation.SuppressLint;
import android.content.Co
ntext;
import android.graphics
.bitmap;
import android.graphics
.bitmap.Con
fig;
import android.graphics
.bitmapFactory;
import android.graphic
s.Canvas;
import android.graphic
s.Color;
import android.graphic
s.LinearGradient;
import android.graphic
s.Matrix;
import android.graphic
s.Paint;
import android.graphic
s.PorterDuffXfermode;
import android.graphic
s.Shader.TileMode;
import android.graphic
s.drawable
.bitmapDrawable;
import android.uti
l.AttributeSet;
import android.view.View;
public class FlectionView extends View
{
Co
ntext mCo
ntext=null;
public FlectionView(Co
ntext co
ntext)
{
super(co
ntext
);
}
public FlectionView(Co
ntext co
ntext,AttributeSet attrs)
{
super(co
ntext,attrs
);
thi
s.mCo
ntext=co
ntext;
}
@SuppressLint("DrawAl
LOCATIOn")
@Override
protected void onDraw(Canvas canvas)
{
//设置背景色
thi
s.set
BACkgroundColor(Color.parseColor("#8B8378")
);
Bitmap oldBitmap = BitmapFactory.decode
resource(mCo
ntext.get
resources(),R.drawable.drop
Box);
Bitmap newBitmap = createFlectionBitmap(oldBitma
p);
canva
s.drawBitmap(newBitmap,newBitmap.getWidth(),newBitmap.getHeight(),new Paint()
);
thi
s.invalidate(
);
}
//
获取原图+倒影图的bitmap
private Bitmap createFlectionBitmap(Bitmap oldBitma
p) {
int mWidth = oldBitmap.getWidth(
);
int mHeight = oldBitmap.getHeight(
);
//原图和倒影图之
间的缝隙
int gap = 2;
Matrix matrix = new Matrix(
);
matrix.preScale(1,-1
);
Bitmap flection = Bitmap.createBitmap(oldBitmap,mHeight / 2,mWidth,matrix,
fals
E);
Bitmap
BACkground = Bitmap.createBitmap(mWidth,mHeight+gap+mHeight/2,Con
fig.ARGB_8888
);
Canvas canvas = new Canvas(
BACkground
);
Paint p1 = new Paint(
);
//画出原图
canva
s.drawBitmap(oldBitmap,p1
);
//画出倒影图
canva
s.drawBitmap(flection,mHeight+gap,p1
);
Paint shaderPaint = new Paint(
);
LinearGradient shader = new LinearGradient(0,mHeight,flection.getHeight(),0x70ffffff,0x00ffffff,TileMode.MIRROR
);
shaderPaint.setShader(shader
);
shaderPaint.setXfermode(new PorterDuffXfermode(android.graphic
s.PorterDuff.Mode.DST_IN)
);
//画出渐变颜色
canva
s.drawRect(0,
BACkground.getHeight(),shaderPa
int);
return
BACkground;
}
}