2017-05-31 7 views
0

サービスを開始すると、表示オーバーレイ(画像)のようなチャットヘッドが開くアプリケーションを作成しています。しかし、画像が非常に大きい一方で、私はこれを達成することができたと私はサイズ変更できませんでした:サービスでImageViewを小さいサイズにリサイズする

のonCreate:

public void onCreate() { 
     super.onCreate(); 

     prefs = new PreferenceHelper(getApplicationContext()); 
     buildGoogleApiClient(); 
     Log.i(LOGSERVICE, "onCreate"); 
     chatHead = new ImageView(this); 
     chatHead.setImageResource(R.drawable.floaticon); 
     int width = 20; // ((display.getWidth()*20)/100) 
     int height = 20;// ((display.getHeight()*30)/100) 
     LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height); 
     chatHead.setLayoutParams(parms); 

     final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 

     //Specify the view position 
     params.gravity = Gravity.TOP | Gravity.LEFT;  //Initially view will be added to top-left corner 
     params.x = 0; 
     params.y = 20; 

     //Add the view to the window 
     mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
     mWindowManager.addView(chatHead, params); 
     chatHead.setOnTouchListener(new View.OnTouchListener() { 
      private int initialX; 
      private int initialY; 
      private float initialTouchX; 
      private float initialTouchY; 


      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 


         //remember the initial position. 
         initialX = params.x; 
         initialY = params.y; 


         //get the touch location 
         initialTouchX = event.getRawX(); 
         initialTouchY = event.getRawY(); 
         return true; 
        case MotionEvent.ACTION_MOVE: 
         //Calculate the X and Y coordinates of the view. 
         params.x = initialX + (int) (event.getRawX() - initialTouchX); 
         params.y = initialY + (int) (event.getRawY() - initialTouchY); 


         //Update the layout with new X & Y coordinate 
         mWindowManager.updateViewLayout(chatHead, params); 
         return true; 
       } 
       return false; 
      } 
     }); 
    } 

答えて

0
Change your code from: 

LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height); 
     chatHead.setLayoutParams(parms); 

to 

ViewGroup.LayoutParams params = chatHead.getLayoutParams(); 
params.width = 20; 
params.height = 20; 

chatHead.setLayoutParams(PARMSを)。

+0

ごめんなさい!アプリケーションがクラッシュする –

+0

完全なコードとクラッシュログを貼り付ける – sumit

関連する問題