Search code examples
androidscrollviewtablet

how to get scroll position for tablet in android


I am trying to make application like single page scroll website. I have some menus; if i click the menu, it will start scroll down and show the corresponding Paragraph; in that I have added videoview, everything is working fine, but when I test with the tablet - if I click menu its not showing corresponding paragraph but its scrolling. kindly suggest some solution thanks in advance this is my code.

  scroll.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
            @Override
            public void onScrollChanged() 
            {


                int scrollY = scroll.getScrollY(); 
                System.out.println(+scrollY);
                tv.setText("Escriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviado Escriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviado Escriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviado");
                tv1.setText("Escriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviado Escriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviado Escriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviadoEscriba el mensaje y luego clickee el canal a ser enviado");
                if(scrollY>350)
                {
                    top.setVisibility(View.VISIBLE);
                    System.out.println("Success");
                    top.setX(400);
                    top.setY(550+scrollY);
                     if(link=="")
                    {
                        videoView.setVisibility(View.GONE);
                    }
                     videoView.setVisibility(View.VISIBLE);
                    mediaController.setAnchorView(videoView);
                    Uri video = Uri.parse(link);
                    videoView.setMediaController(mediaController);
                    videoView.setVideoURI(video);

                    videoView.setOnPreparedListener(new OnPreparedListener() {
                      public void onPrepared(MediaPlayer mp) {
                          //first starting the video, when loaded
                        videoView.start();
                          //then waiting for 1 millisecond
                          try {
                              Thread.sleep(1);
                          } 
                          catch (InterruptedException e) {
                              //     TODO Auto-generated catch block
                              e.printStackTrace();
                          }
                          videoView.pause();                       
                          mediaController.show();
                      }
                  });
                    top.setOnClickListener(new View.OnClickListener() 
                    {

                        @Override
                        public void onClick(View v) 
                        {
                            // TODO Auto-generated method stub
                            scroll.fullScroll(scroll.FOCUS_UP);

                        }
                    });
                }
                else
                {
                    top.setVisibility(View.INVISIBLE);
                }

            }

        });

        b2.setOnClickListener(new View.OnClickListener() {          
        @Override
        public void onClick(View v) {
            scroll.scrollBy(0, +400);               
        }
    });
    b3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            scroll.scrollBy(0, +1000);              
        }
    });

Solution

  • You are passing absolute value in pixels in scrollBymethod. Of course it wouldn't work everywhere because android runs on thousands different screens.

    So I suggest you to start from this article, and after, when you will clearly understand everything here, you should go with something like:

    scroll.scrollBy(0, paragraphOneHeight + paragraphTwoHeight);
    

    Where paragraphOneHeight and paragraphTwoHeight is dynamically calculated heights of proper paragraphs in your ScrollView.