2012-09-26 87 views
0

我使用Canvas和Bitmap類創建圖像。我想將其設置爲用戶的背景。然後我想在它上面添加更多的圖像。添加圖像作爲背景並將其他圖像放在上面

這是應該作爲背景的圖像的代碼。

ImageView imgMap1 = (ImageView) findViewById(R.id.imgMap1); 
imgMap1.setImageDrawable(new BitmapDrawable(Bitmap.createBitmap(bmp, 0, 0, 500, 500))); 

,這是爲了讓它作爲背景代碼:

LinearLayout ll = new LinearLayout(this); 
ll.setBackgroundResource(R.drawable.nn); 
this.setContentView(ll); 

這裏的問題是:當我將它設置爲背景,我看不到其他的照片了。 我該怎麼做? 在此先感謝。

其他圖像在佈局中添加。他們可以通過手指觸摸移動。用戶可以通過手指重新定位它們。

ImageView i1 = (ImageView) findViewById(R.id.Image1); 
    ImageView i2 = (ImageView) findViewById(R.id.Image2); 
+1

你能發佈更多關於如何添加其他圖片的代碼嗎? –

+0

您可以在第一張圖片上繪製第二張圖片。看看我的答案你可以如何實現這裏:http://stackoverflow.com/questions/12330220/androiddraw-image-in-the-center-of-another-image/12332941#12332941 –

+0

感謝您的答案。代碼被添加。 我有兩種可能性。我可以將它們添加到佈局中,或者我可以將它們添加到Java代碼中。 哪一個會工作? –

回答

0

佈局是從XML文件中的自上而下構建的,或者按照您在代碼中添加元素的順序構建。這聽起來像是你的其他圖像首先被添加到佈局,無論是作爲XML文件中更高級的元素,還是更早的代碼。您需要添加其他代碼作爲完整答案的上下文。

0

只注意到你可以使用setImageBitmap(Bitmap bm)See the Android Reference

然後讓說說你的問題直接設置Bitmap爲您ImageView的內容。

首先,創建自己的類延伸View; 其次,負載背景圖像和使用位圖 三疊加圖像,調用onTouch事件,使onDraw方法使用返回的座標自動重新繪製覆蓋圖像通過onTouch

喜歡的東西:

public class dragndrop extends Activity { 
/** Called when the activity is first created. */ 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    // using this to load your background image 
    BitmapFactory.Options opt = new BitmapFactory.Options(); 
    opt.inPreferredConfig = Bitmap.Config.RGB_565; // this is not a must  
    bmBackground = BitmapFactory.decodeFile(filePath, opt); 
    super.onCreate(savedInstanceState); 
    DrawView dv = new DrawView(dragndrop.this); 
    setContentView(dv); 
} 


public class DrawView extends View { 

    Point coordinate; 

    public DrawView(Context context) { 
     super(context); 
     setFocusable(true); //necessary for getting the touch events 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     // assume you have already load your background image as bitmap 
     canvas.drawBitmap(bmBackground, 0, 0, null); 

    // assume bm is the overlay image you need to put on top, 
     // the method here will draw the object with the coordinate you give 
    canvas.drawBitmap(bm, coordinate.x, coordinate.y, null); 
    } 



    // events when touching the screen 
    public boolean onTouchEvent(MotionEvent event) { 
     int eventaction = event.getAction(); 

     int x = (int)event.getX(); 
     int y = (int)event.getY(); 

     switch (eventaction) { 

     case MotionEvent.ACTION_DOWN: 
     // add code here to determine the point user touched is within the object or not 

        break; 
       } 
       } 

      break; 


     case MotionEvent.ACTION_MOVE: // touch 'n' drag 

      // pass the touch point to your object 
      coordinate.x = x; 
      coordinate.y = y; 

      break; 

     case MotionEvent.ACTION_UP: 
      // touch drop - just do things here after dropping 

      break; 
     } 
     // redraw the canvas 
     invalidate(); 
     return true; 

    } 


} 


} 

這是我自己的片段,請在使用前編輯,並請讓我知道您的問題何時解決。

+0

這個解決方案與我的編碼有點不同,所以我不知道它。我會嘗試並報告結果。 –

+0

@ John_sei4結果如何? – dumbfingers

相關問題