new Thread(new Runnable(){ int xpos=0;//定义一个移动的常量 public void run() { // TODO Auto-generated method stub while(true){ //得到一个消息对象 Message msg=handler.obtainMessage(); if(xpos>=srcbmp.getWidth()){ xpos=0; }//这里判断移动的长度是否大于图片宽度 msg.arg1=xpos; xpos+=50; try{ Thread.sleep(100); }catch(InterruptedException e){ e.printStackTrace(); } handler.sendMessage(msg); } } }).start();
?最近项目中要实现一个云彩移动的动画的效果。出现java.lang.IllegalAraumentException: x+width must be <=bitmap.width异常?????
我是先创建? 要达到云彩移动的动画。我写一个线程如上所示? 然后在Handler 的sendHandler()方法里
创建方法如下
srcbmp=BitmapFactory.decodeResource(getResources(),R.drawable.yun); mx=new Matrix(); mx.postScale((float)1.0,(float)1.0);
Bitmap resizebmp = Bitmap.createBitmap(srcbmp, msg.arg1, 0, 320, 205,?????? mx, true);?
??创建bitmap
?云彩? 移动的重点在于线程里的xpos参数? xops+=1;每次都在上次一次的x坐标軕上加1.(这个数由你定。看你需要移动的快慢) 。??? 现在来说异常解决的办法。 其实发生这个异常是由于
if(xpos>=srcbmp.getWidth())
?这个里面的判断
? 应该让改成
if(xpos+320>=srcbmp.getWidth())
?
? 这样就不会有这个错误了。