package com.kanshu.kanshu;
import android.animation.LayoutTransition;
import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.edmodo.rangebar.TickedSeekBar;
import com.kanshu.kanshu.adapter.ReadingViewAdapter;
import com.kanshu.kanshu.model.ReadingChunk;
import java.util.ArrayList;
import java.util.List;
public class ReadingViewFragment extends Fragment {
private boolean mIsSliderCollapsed;
private RecyclerView readingView;
private View touchInterceptView;
public ReadingViewFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mIsSliderCollapsed = true;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_reading_view, container, false);
readingView = (RecyclerView) v.findViewById(R.id.reading_view);
touchInterceptView = v.findViewById(R.id.touch_intercept_view);
setupReadingView();
final LinearLayout seekBarLayout = ((LinearLayout) v.findViewById(R.id.levelSliderFrame));
final RelativeLayout hanziLayout = ((RelativeLayout) v.findViewById(R.id.hanziSlider));
final RelativeLayout textSizeLayout = ((RelativeLayout) v.findViewById(R.id.alphaSlider));
seekBarLayout.setAlpha(0.3f);
LayoutTransition transition = new LayoutTransition();
transition.setStagger(LayoutTransition.CHANGE_DISAPPEARING,100);
transition.setStagger(LayoutTransition.CHANGE_APPEARING,100);
transition.setStartDelay(LayoutTransition.DISAPPEARING, 50);
transition.setDuration(LayoutTransition.APPEARING, 200);
transition.setDuration(LayoutTransition.DISAPPEARING, 300);
transition.setDuration(LayoutTransition.CHANGE_DISAPPEARING,100);
transition.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 300);
transition.setDuration(LayoutTransition.CHANGE_APPEARING,200);
seekBarLayout.setLayoutTransition(transition);
final TickedSeekBar sb = ((TickedSeekBar)v.findViewById(R.id.levelSlider));
sb.setEnabled(false);
seekBarLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v2, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
if(mIsSliderCollapsed){
touchInterceptView.setVisibility(View.VISIBLE);
hanziLayout.setVisibility(View.VISIBLE);
textSizeLayout.setVisibility(View.VISIBLE);
seekBarLayout.getLayoutTransition().addTransitionListener(new LayoutTransition.TransitionListener() {
@Override
public void startTransition(LayoutTransition transition,
ViewGroup container, View view,
int transitionType) {
}
@Override
public void endTransition(LayoutTransition transition,
ViewGroup container, View view, int transitionType) {
if (view == hanziLayout) {
seekBarLayout.setAlpha(1.0f);
seekBarLayout.getLayoutTransition().removeTransitionListener(this);
sb.setEnabled(true);
}
}
});
mIsSliderCollapsed = false;
}
}
return true;
}
});
touchInterceptView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (!mIsSliderCollapsed) {
touchInterceptView.setVisibility(View.GONE);
textSizeLayout.setVisibility(View.GONE);
hanziLayout.setVisibility(View.GONE);
seekBarLayout.getLayoutTransition().addTransitionListener(new LayoutTransition.TransitionListener() {
@Override
public void startTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) {
}
@Override
public void endTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) {
if(view == hanziLayout){
seekBarLayout.setAlpha(0.3f);
seekBarLayout.getLayoutTransition().removeTransitionListener(this);
sb.setEnabled(false);
}
}
});
mIsSliderCollapsed = true;
}
}
return true;
}
});
return v;
}
private void setupReadingView() {
final List<ReadingChunk> chunkList = new ArrayList<>();
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
chunkList.add(new ReadingChunk(getActivity(), "he or him", "tā", "他"));
chunkList.add(new ReadingChunk(getActivity(), "to shout", "jiào", "叫"));
chunkList.add(new ReadingChunk(getActivity(), "surname Sun", "Sūn", "孙"));
chunkList.add(new ReadingChunk(getActivity(), "double-edged sword", "jiàn", "剑"));
chunkList.add(new ReadingChunk(getActivity(), "is", "shì", "是"));
chunkList.add(new ReadingChunk(getActivity(), "trip", "lǔ:yóu", "旅游"));
ReadingViewAdapter adapter = new ReadingViewAdapter(getActivity(), chunkList);
readingView.setHasFixedSize(true);
final GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 100);
GridLayoutManager.SpanSizeLookup spanSizeLookup = new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
float spanSize = (chunkList.get(position).getWidth() / readingView.getWidth()) * 100;
// check for span size of over 100% of width
return Math.min((int) spanSize, 100);
}
};
spanSizeLookup.setSpanIndexCacheEnabled(true);
layoutManager.setSpanSizeLookup(spanSizeLookup);
readingView.setLayoutManager(layoutManager);
readingView.setAdapter(adapter);
}
}