pedrovgs / DraggablePanel

Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube graphic component.
Apache License 2.0
2.99k stars 606 forks source link

Error running draggable panel demo #11

Closed manpreetsinghsodhi closed 9 years ago

manpreetsinghsodhi commented 9 years ago

I am using following code to run my demo using draggable pannel library // Mainactivity public class MainActivity extends FragmentActivity {

private static final String YOUTUBE_API_KEY = "AIzaSyC1rMU-mkhoyTvBIdTnYU0dss0tU9vtK48";
private static final String VIDEO_KEY = "gsjtg7m1MMM";
private static final String VIDEO_POSTER_THUMBNAIL = "http://4.bp.blogspot.com/-BT6IshdVsoA/UjfnTo_TkBI/AAAAAAAAMWk/JvDCYCoFRlQ/s1600/xmenDOFP.wobbly.1.jpg";
private static final String SECOND_VIDEO_POSTER_THUMBNAIL = "http://media.comicbook.com/wp-content/uploads/2013/07/x-men-days-of-future-past-wolverine-poster.jpg";
private static final String VIDEO_POSTER_TITLE = "X-Men: Days of Future Past";
private YouTubePlayer youtubePlayer;
private YouTubePlayerSupportFragment youtubeFragment;

ImageView thumbnailImageView;
main.java.com.github.pedrovgs.DraggablePanel draggablePanel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ButterKnife.inject(this);

      thumbnailImageView = (ImageView)findViewById(R.id.iv_thumbnail);
      draggablePanel = (DraggablePanel)findViewById(R.id.draggable_panel);

      initializeYoutubeFragment();

      initializeDraggablePanel();

      hookDraggablePanelListeners();

      thumbnailImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             draggablePanel.maximize();

        }
    });

}

/**
 * Initialize the YouTubeSupportFrament attached as top fragment to the DraggablePanel widget and reproduce the
 * YouTube video represented with a YouTube url.
 */
private void initializeYoutubeFragment() {
    youtubeFragment = new YouTubePlayerSupportFragment();
    youtubeFragment.initialize(YOUTUBE_API_KEY,
            new YouTubePlayer.OnInitializedListener() {

                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
                    if (!wasRestored) {
                        youtubePlayer = player;
                        youtubePlayer.loadVideo(VIDEO_KEY);
                        youtubePlayer.setShowFullscreenButton(true);
                    }
                }

                @Override
                public void onInitializationFailure(Provider arg0,
                        com.google.android.youtube.player.YouTubeInitializationResult arg1) {
                    // TODO Auto-generated method stub

                }

            }
    );
}

/**
 * Initialize and configure the DraggablePanel widget with two fragments and some attributes.
 */
private void initializeDraggablePanel() {
    draggablePanel.setFragmentManager(getSupportFragmentManager());
    draggablePanel.setTopFragment(youtubeFragment);
    MoviePosterFragment moviePosterFragment = new MoviePosterFragment();
    moviePosterFragment.setPoster(VIDEO_POSTER_THUMBNAIL);
    moviePosterFragment.setPosterTitle(VIDEO_POSTER_TITLE);
    draggablePanel.setBottomFragment(moviePosterFragment);
    draggablePanel.initializeView();
    Picasso.with(this).load(SECOND_VIDEO_POSTER_THUMBNAIL).placeholder(R.drawable.xmen_placeholder).into(thumbnailImageView);
}

/**
 * Hook the DraggableListener to DraggablePanel to pause or resume the video when the DragglabePanel is maximized
 * or closed.
 */
private void hookDraggablePanelListeners() {
    draggablePanel.setDraggableListener(new DraggableListener() {
        @Override
        public void onMaximized() {
            playVideo();
        }

        @Override
        public void onMinimized() {
            //Empty
        }

        @Override
        public void onClosedToLeft() {
            pauseVideo();
        }

        @Override
        public void onClosedToRight() {
            pauseVideo();
        }
    });
}

/**
 * Pause the video reproduced in the YouTubePlayer.
 */
private void pauseVideo() {
    if (youtubePlayer.isPlaying()) {
        youtubePlayer.pause();
    }
}

/**
 * Resume the video reproduced in the YouTubePlayer.
 */
private void playVideo() {
    if (!youtubePlayer.isPlaying()) {
        youtubePlayer.play();
    }
}

}

MoviePosterFragment.java

public class MoviePosterFragment extends Fragment {

ImageView thumbnailImageView;

private String videoPosterThumbnail;
private String posterTitle;

/**
 * Override method used to initialize the fragment.
 *
 * @param inflater
 * @param container
 * @param savedInstanceState
 * @return
 */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_movie_poster, container, false);

    thumbnailImageView = (ImageView)view.findViewById(R.id.iv_thumbnail);

    thumbnailImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            onThubmnailClicked();
        }
    });

    ButterKnife.inject(this, view);
    Picasso.with(getActivity()).load(videoPosterThumbnail).placeholder(R.drawable.xmen_placeholder).into(thumbnailImageView);
    return view;
}

/**
 * Show the poster image in the thumbnailImageView widget.
 *
 * @param videoPosterThumbnail
 */
public void setPoster(String videoPosterThumbnail) {
    this.videoPosterThumbnail = videoPosterThumbnail;
}

/**
 * Store the poster title to show it when the thumbanil view is clicked.
 *
 * @param posterTitle
 */
public void setPosterTitle(String posterTitle) {
    this.posterTitle = posterTitle;
}

void onThubmnailClicked() {
    Toast.makeText(getActivity(), posterTitle, Toast.LENGTH_SHORT).show();
}

}

On running it i am getting following error

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.github.pedrovgs.DraggablePanel [10:21:35 AM] Manpreet Singh: 10-14 10:11:26.213: D/dalvikvm(8932): Late-enabling CheckJNI 10-14 10:11:26.373: D/AndroidRuntime(8932): Shutting down VM 10-14 10:11:26.373: W/dalvikvm(8932): threadid=1: thread exiting with uncaught exception (group=0x4192dba8) 10-14 10:11:26.433: E/AndroidRuntime(8932): FATAL EXCEPTION: main 10-14 10:11:26.433: E/AndroidRuntime(8932): Process: com.example.demo, PID: 8932 10-14 10:11:26.433: E/AndroidRuntime(8932): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.github.pedrovgs.DraggablePanel 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.ActivityThread.access$800(ActivityThread.java:135) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.os.Handler.dispatchMessage(Handler.java:102) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.os.Looper.loop(Looper.java:136) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.ActivityThread.main(ActivityThread.java:5001) 10-14 10:11:26.433: E/AndroidRuntime(8932): at java.lang.reflect.Method.invokeNative(Native Method) 10-14 10:11:26.433: E/AndroidRuntime(8932): at java.lang.reflect.Method.invoke(Method.java:515) 10-14 10:11:26.433: E/AndroidRuntime(8932): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 10-14 10:11:26.433: E/AndroidRuntime(8932): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 10-14 10:11:26.433: E/AndroidRuntime(8932): at dalvik.system.NativeStart.main(Native Method) 10-14 10:11:26.433: E/AndroidRuntime(8932): Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.github.pedrovgs.DraggablePanel 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 10-14 10:11:26.433: E/AndroidRuntime(8932): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.Activity.setContentView(Activity.java:1929) 10-14 10:11:26.433: E/AndroidRuntime(8932): at com.example.demo.MainActivity.onCreate(MainActivity.java:33) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.Activity.performCreate(Activity.java:5231) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 10-14 10:11:26.433: E/AndroidRuntime(8932): ... 11 more 10-14 10:11:26.433: E/AndroidRuntime(8932): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.github.pedrovgs.DraggablePanel" on path: DexPathList[[zip file "/data/app/com.example.demo-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.demo-2, /vendor/lib, /system/lib]] 10-14 10:11:26.433: E/AndroidRuntime(8932): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 10-14 10:11:26.433: E/AndroidRuntime(8932): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 10-14 10:11:26.433: E/AndroidRuntime(8932): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.createView(LayoutInflater.java:559) 10-14 10:11:26.433: E/AndroidRuntime(8932): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 10-14 10:11:26.433: E/AndroidRuntime(8932): ... 21 more

pedrovgs commented 9 years ago

Please...upload your project to a public repository to be able to review what's going on

pedrovgs commented 9 years ago

We are going to close all your problems in #17