之前有看到有关直接调用桌面的壁纸
不过要求系统最低为2.1
为了在低版本使用,就只能自己绘制图片。
如下为绘制的关键部分。
上面的方法是从第1页开始,如果在第一页左移则会看到最底部。
为避免这情况我们在计算时前后多算一页就行了。
对应的方法为:
详见附件图片。
不过要求系统最低为2.1
为了在低版本使用,就只能自己绘制图片。
如下为绘制的关键部分。
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
float left = 0;
if (getChildCount() !=0) {
final int curLeft=getScrollX();//屏幕左侧位置
final int curCount=getChildCount();//当前总页面
final float bmWidth=mBitmap.getWidth();//壁纸宽度
//根据定制的不同view这边总长度参数不一样
final float totalWidth=getWidth()*curCount;
final float lastScrLeft=totalWidth-getWidth();
final float lastWalLeft=totalWidth-bmWidth;
left=lastWalLeft/lastScrLeft*curLeft;//计算公式
}
//当有滑动等事件可引起背景图片的相应位置改变
canvas.drawBitmap(mBitmap, left, 0, null);
super.draw(canvas);
}
上面的方法是从第1页开始,如果在第一页左移则会看到最底部。
为避免这情况我们在计算时前后多算一页就行了。
对应的方法为:
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
float left = 0;
if (getChildCount() !=0) {
final int curLeft=getScrollX();//屏幕左侧位置
final int curCount=getChildCount();//当前总页面
final float bmWidth=mBitmap.getWidth();//壁纸宽度
//根据定制的不同view这边总长度参数不一样,这边在前后各加一页
final float totalWidth=getWidth()*(curCount+2);
final float lastScrLeft=totalWidth-2*getWidth();
final float lastWalLeft=totalWidth-bmWidth;
left=lastWalLeft/lastScrLeft*(curLeft-getWidth());//计算公式
}
//当有滑动等事件可引起背景图片的相应位置改变
canvas.drawBitmap(mBitmap, left, 0, null);
super.draw(canvas);
}
详见附件图片。