master details flow for tablet

This commit is contained in:
danijoo
2015-11-01 13:55:49 +01:00
parent 35def383d8
commit 0c35ab6f10
5 changed files with 61 additions and 7 deletions

View File

@@ -4,19 +4,27 @@ import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.TextView;
import net.headlezz.udacityproject1.movielist.MovieListFragment;
import net.headlezz.udacityproject1.tmdbapi.Movie;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Main activity is mainly for handling fragment transactions
*/
public class MainActivity extends AppCompatActivity implements MovieNavigation, FragmentManager.OnBackStackChangedListener {
@Bind(R.id.main_details_placeHolderText) TextView detailsPlaceholderView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setTitle(getString(R.string.app_name));
@@ -38,8 +46,11 @@ public class MainActivity extends AppCompatActivity implements MovieNavigation,
*/
public void showDetailsFragment(Movie movie) {
MovieDetailsFragment frag = MovieDetailsFragment.newInstance(movie);
int holderId = getResources().getBoolean(R.bool.master_detail) ? R.id.fragmentHolderDetails : R.id.fragmentHolder;
if(detailsPlaceholderView != null)
detailsPlaceholderView.setVisibility(View.GONE);
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentHolder, frag)
.replace(holderId, frag)
.addToBackStack(MovieDetailsFragment.TAG)
.commit();
}

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_weight="1"
android:id="@+id/fragmentHolder"
android:layout_width="0dp"
android:layout_height="match_parent" />
<FrameLayout
android:layout_weight="1"
android:id="@+id/fragmentHolderDetails"
android:layout_width="0dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/main_details_placeHolderText"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Please select a movie"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,3 @@
<resources>
<bool name="master_detail">true</bool>
</resources>

View File

@@ -1,6 +0,0 @@
<resources>
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>

View File

@@ -3,4 +3,5 @@
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<bool name="master_detail">false</bool>
</resources>