2016-03-30 4 views
1

Я кнопку создания, чтобы изменить громкость и я хочу, чтобы onClick, seekbar предстает как своего рода dialog (, но не тот, который покрывает экран и не позволяет взаимодействие с другими элементами на экран) под кнопкой, и он должен исчезнуть через несколько секунд. Я не хочу использовать alertDialog, который поддерживает android, как это охватывает всю деятельность. Как я могу это сделать? Также есть ли какая-нибудь библиотека для этого?Android SeekBar какдиалоговое

+0

Пожалуйста, вы можете отправить скриншот как seelbar смотрит и как вы хотите его –

ответ

1

Поместите свой SeekBar ниже вашей кнопки в вашем XML-схемы с альфа = "0", и попробуйте:

SeekBar mSeekbar; 
    int delay = 1000; 
    Button mButton; 
    Handler mHandler; 
    Runnable mRunnable = new Runnable() { 
     @Override 
     public void run() { 
      Animation anim = new AlphaAnimation(1, 0); 
      anim.setDuration(500); 
      mSeekbar.startAnimation(anim); 
     } 
    }; 


    //inside onCreate (or wherever you decide) 
    mHandler = new Handler(); //(android.os) 
    mButton = (Button) findViewById(R.id.button1); 

    mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      mHandler.removeCallbacks(mRunnable); 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      mHandler.postDelayed(mRunnable, delay); 
     } 
    }); 


    mButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(mSeekbar.getAlpha() == 0) { 
       Animation anim = new AlphaAnimation(0, 1); 
       anim.setDuration(500); 
       anim.setAnimationListener(new Animation.AnimationListener() { 
        @Override 
        public void onAnimationStart(Animation animation) { 

        } 

        @Override 
        public void onAnimationEnd(Animation animation) { 
         mHandler.postDelayed(mRunnable, delay); 
        } 

        @Override 
        public void onAnimationRepeat(Animation animation) { 

        } 
       }); 
       mSeekbar.startAnimation(anim); 
      } 
     } 
    }); 
+0

. Вы не уверены, что анимация работает так, как ожидалось? – zek54

+0

убедитесь, что вы не установили видимость «ушел» и установите продолжительность анимации – nbaroz

1

Вы можете использовать WindowManager, чтобы добавить SeekBar к окну и в то же время вы можете взаимодействовать с вашей деятельностью или другим. Отправьте один обработчик для удаления этого представления по истечении указанного времени.

 View yourSeekBarView = inflator.inflate(R.layout.your_layout_xml,null,false); 
     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       150, 
       50, 
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
       0 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 
     params.gravity = Gravity.CENTER_HORIZONTAL |Gravity.TOP;  
     WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
     wm.addView(oView, params); 

wm.removeView(yourSeekBarView);