/** * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, * copy, modify, and distribute this software in source code or binary form for use * in connection with the web services and APIs provided by Facebook. * * As with any software that integrates with the Facebook platform, your use of * this software is subject to the Facebook Developer Principles and Policies * [http://developers.facebook.com/policy/]. This copyright notice shall be * included in all copies or substantial portions of the software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.example.shareit; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.facebook.CallbackManager; import com.facebook.login.widget.LoginButton; import com.facebook.share.widget.LikeView; import java.util.ArrayList; public class ShareFragment extends Fragment { private CallbackManager mCallbackManager; private OnShareContentChangedListener mShareContentChangedListener; private ViewPager mViewPage; // The resource to url mapping private static final ArrayList<Pair<Integer, String>> IMAGE_IDS = new ArrayList<Pair<Integer, String>>() { { add(new Pair<>(R.drawable.goofy, "https://d3uu10x6fsg06w.cloudfront.net/shareitexampleapp/goofy/index.html")); add(new Pair<>(R.drawable.liking, "https://d3uu10x6fsg06w.cloudfront.net/shareitexampleapp/liking/index.html")); add(new Pair<>(R.drawable.viking, "https://d3uu10x6fsg06w.cloudfront.net/shareitexampleapp/viking/index.html")); }}; @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); mCallbackManager = CallbackManager.Factory.create(); View view = inflater.inflate(R.layout.share_it_view, container, false); LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); loginButton.setFragment(this); loginButton.setReadPermissions("public_profile"); setupViewPage(view); LikeView pageLike = (LikeView) view.findViewById(R.id.like_page); pageLike.setFragment(this); return view; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); mCallbackManager.onActivityResult(requestCode, resultCode, data); } public void setOnShareContentChangeListener(OnShareContentChangedListener listener) { mShareContentChangedListener = listener; } public String getCurrentShareContent() { return IMAGE_IDS.get(mViewPage.getCurrentItem()).second; } private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { public ScreenSlidePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { ShareImageFragment imageFragment = new ShareImageFragment(); imageFragment.setImage(IMAGE_IDS.get(position).first); return imageFragment; } @Override public int getCount() { return IMAGE_IDS.size(); } } private void setupViewPage(View view) { mViewPage = (ViewPager) view.findViewById(R.id.pager); PagerAdapter adapter = new ScreenSlidePagerAdapter(getFragmentManager()); mViewPage.setAdapter(adapter); final PageSelector pageSelector = (PageSelector) view.findViewById(R.id.page_selector); pageSelector.setImageCount(IMAGE_IDS.size()); final LikeView photoLike = (LikeView) view.findViewById(R.id.like_photo); photoLike.setFragment(this); mViewPage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels) { pageSelector.setPosition(position); String shareContent = IMAGE_IDS.get(position).second; photoLike.setObjectIdAndType( shareContent, LikeView.ObjectType.OPEN_GRAPH); mShareContentChangedListener.onShareContentChanged(shareContent); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } public interface OnShareContentChangedListener { void onShareContentChanged(String content); } }