2015-03-27 2 views
0

Я пытаюсь создать изображение, которое находится на вершине всех окон с андроида услуг, и это onCreate метод:Android OnClickListener внутри службы

@Override 
    public void onCreate() { 
     super.onCreate(); 
     mWindowsManger = (WindowManager) getSystemService(WINDOW_SERVICE); 

     mFloatingImage = new ImageView(this); 
     mFloatingImage.setImageResource(R.mipmap.ic_launcher); 
     mFloatingImage.setAlpha(0.5f); 
     mParams = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 

     mParams.gravity = Gravity.TOP | Gravity.LEFT; 
     mParams.x = 0; 
     mParams.y = 100; 
     mFloatingImage.setClickable(true); 
     mFloatingImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        System.out.print("clicked"); 
      } 
     }); 


     mWindowsManger.addView(mFloatingButtonImage, mParams); 
    } 

Моя проблема OnClickListener не работает вместо OnTouchListener работы.

Есть ли способ реализовать OnClikListener в услугах?

+0

Вы динамически созданный ImageView? –

+0

Да, это основано на этом учебнике http://www.piwai.info/chatheads-basics/ –

+0

Я не говорю вам, что вы сделали. Вы должны его найти .. ;-) –

ответ

2

ли это:

@Override 
    public void onCreate() { 
    super.onCreate(); 
    mWindowsManger = (WindowManager) getSystemService(WINDOW_SERVICE); 

    mFloatingImage = new ImageView(this); 
    mFloatingImage.setImageResource(R.mipmap.ic_launcher); 
    mFloatingImage.setAlpha(0.5f); 
    mParams = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      PixelFormat.TRANSLUCENT); 

    mParams.gravity = Gravity.TOP | Gravity.LEFT; 
    mParams.x = 0; 
    mParams.y = 100; 
    mFloatingImage.setClickable(true); 
    mWindowsManger.addView(mFloatingButtonImage, mParams); 
    mFloatingImage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       System.out.print("clicked"); 
     } 
    }); 

} 

НО ДЕЛАТЬ ЭТО ПРЯМО СЕЙЧАС ЭТО РАБОТАЕТ ДЛЯ МЕНЯ:

rl = (RelativeLayout) findViewById(R.id.rl); 
    b = (Button) findViewById(R.id.button1); 

    img = new ImageView(MainActivity.this); 

    img.setImageResource(R.drawable.ic_launcher); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      (int) LayoutParams.WRAP_CONTENT, (int) LayoutParams.WRAP_CONTENT); 

    params.addRule(RelativeLayout.CENTER_IN_PARENT); 

    img.setLayoutParams(params); 

    rl.addView(img); 

    img.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getBaseContext(), "Image Clicked", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

Я редактировал мой post Я пробовал, чтобы его работала для меня .. PLZ попробуйте именно так. –

+0

Plz Следуйте по этой ссылке: http://sampleprogramz.com/android/imageview.php –

1

Абхишек Das дали хороший ответ. Мой ответ на это подмножество его ответа Просто вам нужно позвонить:

mWindowsManger.addView(mFloatingButtonImage, mParams); 

первый, а затем:

mFloatingImage.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      System.out.print("clicked"); 
    } 
}); 

Перед добавлением вид для просмотра иерархии, щелчок слушатель может не работать