Android java.lang.IllegalAraumentException: x+width must be <=bitmap.width异常解决方

 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()) 

 

  这样就不会有这个错误了。

你可能感兴趣的:(java,thread,android)