我是特种兵小影的扮演者,曼联官方网站,5月新股发行一览表
shadowdrawablelr = new gradientdrawable(gradientdrawable.orientation.left_right, color);
shadowdrawablelr.setgradienttype(gradientdrawable.linear_gradient);
float array[] = { 0.55f, 0, 0, 0, 80.0f,
,0.55f, 0, 0, 80.0f,
, 0,0.55f, 0, 80.0f,
, 0, 0, 0.2f, 0};
colormatrix cm = new colormatrix();
cm.set(array);
/*
* |a*0.55 + 80|
* |r*0.55 + 80|
* |g*0.55 + 80|
* |b*0.2|
*/
// cm.setsaturation(0);
mcolormatrixfilter = new colormatrixcolorfilter(cm);
//利用滚动条来实现接触点放开后的动画效果
mscroller = new scroller(context);
}
@override
public void computescroll() {
// todo auto-generated method stub
if (mscroller.computescrolloffset()) {
touchpt.x = mscroller.getcurrx();
touchpt.y = mscroller.getcurry();
postinvalidate();
}
else{
// touchpt.x = -1;
// touchpt.y = -1;
}
super.computescroll();
}
public void setscreen(int screenwidth,int screenheight){
this.screenwidth = screenwidth;
this.screenheight = screenheight;
}
public bitmap getforeimage() {
return foreimage;
}
public void setforeimage(bitmap foreimage) {
this.foreimage = foreimage;
}
public bitmap getbgimage() {
return bgimage;
}
public void setbgimage(bitmap bgimage) {
this.bgimage = bgimage;
}
@override
protected void ondraw(canvas canvas) {
// todo auto-generated method stub
drawpageeffect(canvas);
super.ondraw(canvas);
}
/**
* 画前景图片
* @param canvas
*/
private void drawforceimage(canvas canvas) {
// todo auto-generated method stub
paint mpaint = new paint();
if (foreimage!=null) {
canvas.drawbitmap(foreimage, 0, 0, mpaint);
}
}
/**
* 画背景图片
* @param canvas
*/
private void drawbgimage(canvas canvas,path path) {
// todo auto-generated method stub
paint mpaint = new paint();
if (bgimage!=null) {
canvas.save();
//只在与路径相交处画图
canvas.clippath(path,op.intersect);
canvas.drawbitmap(bgimage, 0, 0, mpaint);
canvas.restore();
}
}
/**
* 画翻页效果
* @param canvas
*/
private void drawpageeffect(canvas canvas) {
// todo auto-generated method stub
drawforceimage(canvas);
paint mpaint = new paint();
if (touchpt.x!=-1 && touchpt.y!=-1) {
//翻页左侧书边
canvas.drawline(touchpt.x, 0, touchpt.x,screenheight, mpaint);
//左侧书边画阴影
shadowdrawablerl.setbounds((int)touchpt.x - 20, 0 ,(int)touchpt.x, screenheight);
shadowdrawablerl.draw(canvas);
//翻页对折处
float halfcut = touchpt.x + (screenwidth - touchpt.x)/2;
canvas.drawline(halfcut, 0, halfcut, screenheight, mpaint);
//对折处左侧画翻页页图片背面
rect backarea = new rect((int)touchpt.x,0,(int)halfcut,screenheight);
paint backpaint = new paint();
backpaint.setcolor(0xffdacab0);
canvas.drawrect(backarea, backpaint);
//将翻页图片正面进行处理水平翻转并平移到touchpt.x点
paint fbpaint = new paint();
fbpaint.setcolorfilter(mcolormatrixfilter);
matrix matrix = new matrix();
matrix.prescale(-1,1);
matrix.posttranslate(foreimage.getwidth() + touchpt.x,0);
canvas.save();
canvas.cliprect(backarea);
canvas.drawbitmap(foreimage, matrix, fbpaint);
canvas.restore();
//对折处画左侧阴影
shadowdrawablerl.setbounds((int)halfcut - 50, 0 ,(int)halfcut, screenheight);
shadowdrawablerl.draw(canvas);
path bgpath = new path();
//可以显示背景图的区域
bgpath.addrect(new rectf(halfcut,0,screenwidth,screenheight), direction.cw);
//对折出右侧画背景
drawbgimage(canvas,bgpath);
//对折处画右侧阴影
shadowdrawablelr.setbounds((int)halfcut, 0 ,(int)halfcut + 50, screenheight);
shadowdrawablelr.draw(canvas);
}
}
@override
public boolean ontouchevent(motionevent event) {
// todo auto-generated method stub
if (event.getaction() == motionevent.action_down) {
touchpt.x = event.getx();
touchpt.y = event.gety();
}
else if(event.getaction() == motionevent.action_move){
lasttouchx = (int)touchpt.x;
touchpt.x = event.getx();
touchpt.y = event.gety();
postinvalidate();
}
else if(event.getaction() == motionevent.action_up){
int dx,dy;
dy = 0;
//向右滑动
if (lasttouchx<touchpt.x) {
dx = foreimage.getwidth() - (int)touchpt.x + 30;
}
else{
//向左滑动
dx = -(int)touchpt.x - foreimage.getwidth();
}
mscroller.startscroll((int)touchpt.x,(int)touchpt.y,dx,dy,1000);
postinvalidate();
}
//必须为true,否则无法获取action_move及action_up事件
return true;
}
}
public class pageactivity extends activity {
protected void oncreate(android.os.bundle savedinstancestate) {
requestwindowfeature(window.feature_no_title);
pagewidget pagewidget = new pagewidget(this);
display display = getwindowmanager().getdefaultdisplay();
int width = display.getwidth();
int height = display.getheight();
pagewidget.setscreen(width, height);
bitmap bm1 = bitmapfactory.decoderesource(getresources(), r.drawable.pre7);
bitmap bm2 = bitmapfactory.decoderesource(getresources(), r.drawable.after7);
bitmap foreimage = bitmap.createscaledbitmap(bm1, width, height,false);
bitmap bgimage = bitmap.createscaledbitmap(bm2, width, height,false);
pagewidget.setbgimage(bgimage);
pagewidget.setforeimage(foreimage);
setcontentview(pagewidget);
super.oncreate(savedinstancestate);
};
}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android apk 项目一键打包并上传到蒲公英的实现方法
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
android 限制某个操作每天只能操作指定的次数(示例代码详解)
Android 集成 google 登录并获取性别等隐私信息的实现代码
网友评论