当前位置:首页 > CN2资讯 > 正文内容

蝴蝶云服务器

3天前CN2资讯


往背景图上贴小图

1.新建一个空的标准大小的图

bitmap = Bitmap.createBitmap(480, 800, Config.ARGB_8888); 2.新建画布,将这个图作为参数传进来 Canvas c = new Canvas(bitmap); 3.将小图画到这个画布上 c.drawBitmap(bm1, 97 , 0, null); 4.新建另一用于显示的画布 Canvas c2 = holder.lockCanvas(); 5.将标准大小的大图缩放成小图大小的图 Bitmap bit = Bitmap.createScaledBitmap(bitmap, x, y, true); 6.将缩小后大图贴到用于显示的画布上显示 c2.drawBitmap(bit, 0, 0, null); 注意:不能直接对背景图进行缩放,要新建一张标准大小的图 旋转蝴蝶 1.保存画布 c.save(); 2.绕蝴蝶中心转,画图是从蝴蝶的上顶点画开始的,取高宽的一半即为蝴蝶的中心点,二者相加 c.rotate(45, x+state[index%5].getHeight()/2, y+state[index%5].getWidth()/2); 3.开始画图 c.drawBitmap(state[index%5], x, y, null); 4.恢复画布 c.restore(); 与坐标轴成一定夹角的图片按指定路线运动 1.设一运动方向的速度,一旋转夹角i,让它在水平和竖直方向分解为水平变化量cx,竖直变化量cy, 2.cx =speed*Math.sin(Math.toRadians(i+30));cy = speed*Math.cos(Math.toRadians(i+30)); 3.x+=cx;y+=cy; 4.当speed = 0时,蝴蝶停下来运动,另外再给一个计时器time,每刷新一次,计时器加一,这样就可以通过判断计时器恢复蝴蝶的运动。 用camera缩放图片时,原来图像是绕着中心旋转的,缩小之后,小图还是从原先的大图的左上角画开始,会产生跳跃。缩放过程: 1.Matrix m = new Matrix(); Camera c1 = new Camera();2.c1.save(); c1.translate(0, 0, 300); c1.getMatrix(m); c1.restore();为防止角度持续增大,在每次角度变化时进行判断 if(i > 360) i-=360; 保证角度在0与360之间变化 用matrix对图像进行缩放 newWidth = 200;//设置新的图片大小 int newHeight = 200; width = b1.getWidth();//获取图片大小 int height = b1.getHeight(); 3.float scalWidth = (float)newWidth/width;//设置缩放比例 float scalHeight = (float)newHeight/height; 4.Matrix m = new Matrix(); m.postScale(scalWidth,scalHeight); 5. canvas.concat(m); Bitmap bit = Bitmap.createBitmap(b1,0,0,width,height,m,true); c.drawBitmap(bit,x+width/2-newWidth/2,y+height/2-newHeight/2);//缩放后画图还是从左上角画开始 m.reset();//一定要重置,不然图像会一直缩放 处理蝴蝶在边界返回的问题: 设一随机数,让蝴蝶在一随机处转向 if(x > 480 || x < -width || y > 800 || y < -height ) { //超过边界将转向 i+=(float)Math.random()+200; if(i > 360) { i = i -360; } }if((x > stayX - 5) && (x < stayX + 5)) { //在一随机点停留 speed = 0; } if(time == 35){ time = 1; speed = 20; stayX = (float)Math.random()*200+200; //刷新35次后重新获取随机数 if(i > 360) { i = i -360; } }内存溢出问题的处理 1.获取图片资源 bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.leaf01_1); 2.将获取到的实际屏幕高度和宽度与480与800的比值自乘以图像实际的高度与宽度进行压缩 bm1 = Bitmap.createScaledBitmap(bm1, (int)((x/480.0f*bm1.getWidth())), (int)((y/800.0f*bm1.getHeight())), true); 3.将压缩后的图像画到画布上 Canvas c = holder.lockCanvas();//锁定画布 c.drawBitmap(bm1, 97 , 0, null); holder.unlockCanvasAndPost(c); }蝴蝶图像出现在背景图下面:这是画图顺序的问题,先画背景图,再画水滴跟动态叶子,最后画蝴蝶,改变 butterfly.draw(c,a,b); butterfly1.draw(c,a,b); butterfly2.draw(c,a,b);的位置 蝴蝶按指定屏幕大小显示,跟之前的缩放方法一样,再将缩放后的图像传到蝴蝶对象中,使draw()方法只执行画图操作,缩放操作都在外面做,可以省内存。 实现蝴蝶停留缩放,在初始化蝴蝶对象时调用的蝴蝶对象的方法中添加蝴蝶缩放方法scale(),因为一只动态的蝴蝶是由五张不同形状的图像变换而成,所以要对五张图都进行缩放,可以在调用缩放方法时执行一个循环,将缩放后的图像放入一个对象数组中,然后在判断蝴蝶停止的时候,将对象数组中的元素显示出来。但要注意在每次缩放一张图完后都要用m.reset()将矩阵重置。 关于将动态壁纸设置为壁纸一段时间后蝴蝶不会出现的问题:这是边界处理的问题, if(x > 480*a || x < -width || y > 800*b || y < -height ) { i+=(float)Math.random()+220; if(i > 360) { i = i -360; } }

因为我们在适应不同屏幕显示的时候都有设置一个显示比例,如果没有将480跟800乘以对应的比例,就会出现蝴蝶越界的问题,这样即使是随机取得的数值,蝴蝶也可能飞不回来。所以要将缩放比例通过蝴蝶对象的draw()方法传到蝴蝶对象中,并且在设置随机停留点时也要将停留点乘以相应的比例。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/22738.html

    分享给朋友:

    “蝴蝶云服务器” 的相关文章

    最便宜的域名注册平台推荐与选择技巧

    在创建一个新网站时,域名是一个不可或缺的部分。众所周知,一个好的域名能够提升品牌形象,也让用户更容易记住。选择便宜的域名注册平台,可以让我们在网站建设的开销上更加省钱。这里有几个我认为特别值得关注的平台,可能会对你有帮助。 1.1 NameCheap的优势与价格分析 让我先谈谈NameCheap。说...

    如何在阿里云国际版上顺利注册与管理账户

    在数字化时代,云计算逐渐成为企业和个人不可或缺的工具。阿里云国际版(Alibaba Cloud International)便是阿里巴巴集团为全球用户推出的一项创新服务。这项服务的目标是让全球的用户,特别是非中国大陆地区的用户,能更方便地接触到高效、安全的云计算资源。 阿里云国际版的推出背景极为重要...

    选择香港主机的最佳指南:提升您的网站性能与用户体验

    香港主机指的是那些在香港地区部署的服务器,主要用于提供网站托管、应用托管或数据库管理等服务。得益于香港卓越的网络基础设施,越来越多的企业和个人选择将他们的运营托付给香港主机。这不仅提升了业务的可达性,也提供了更优质的用户体验。 如果我回想起我最初接触香港主机时,感到非常惊讶于它的潜力。香港地理位置独...

    LightLayer云服务器评测与应用案例分析

    在我日常工作中,云服务器的选择至关重要,而我最近了解到的LightLayer云服务器,给我留下了深刻的印象。作为Megalayer旗下的品牌,LightLayer在全球多个重要地点部署了服务器,尤其是在美国洛杉矶、中国台湾台北和菲律宾马尼拉。这些选择不仅为用户提供了更快速的访问速度,也为他们的云计算...

    如何开启BBR查询并提升TCP网络性能

    BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种由Google开发的TCP拥塞控制算法,我对它的了解让我感到非常兴奋。BBR旨在通过精确的网络条件监测,以提高传输速度和稳定性。传统的拥塞控制算法往往依赖于丢包率的变化来调整传输速...

    VPS去程测试:提升网络性能的关键策略与工具

    在当今数字化时代,VPS(虚拟专用服务器)为各类用户提供了极大的灵活性和控制力。为了确保这种服务能够表现出色,VPS去程测试成为了一个重要的话题。简单来说,去程测试是指从我本地设备到VPS服务器的数据传输路径的检查。这种测试能够帮助我了解数据包在传输过程中的表现,包括延迟和可能的瓶颈。 去程测试的重...