Skip to content

Commit eb20707

Browse files
committed
ended dialer activity
1 parent 3946376 commit eb20707

27 files changed

+412
-157
lines changed

app/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ android {
1919
}
2020
}
2121

22-
2322
dependencies {
2423
compile fileTree(dir: 'libs', include: ['*.jar'])
25-
24+
compile 'com.android.support:cardview-v7:21.0.0'
2625
compile 'com.android.support:appcompat-v7:21.0.0'
2726
compile 'com.android.support:support-v4:21.0.0'
2827
}

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
android:name=".activities.SlidingActivity" >
2222
</activity>
2323

24-
<activity android:name=".activities.DialerSampleActivity">
24+
<activity android:name=".activities.DialerSampleActivity"
25+
android:screenOrientation="portrait">
26+
2527
<intent-filter>
2628
<action android:name="android.intent.action.MAIN" />
2729
<category android:name="android.intent.category.LAUNCHER" />
@@ -30,7 +32,6 @@
3032

3133
<activity
3234
android:name=".activities.ColorActivity"
33-
android:label="@string/title_activity_color" >
34-
</activity>
35+
android:label="@string/title_activity_color" />
3536
</application>
3637
</manifest>

app/src/main/java/com/saulmm/material/activities/ColorActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import android.widget.Switch;
1414

1515
import com.saulmm.material.R;
16-
import com.saulmm.material.utils.Utils;
16+
import com.saulmm.material.utils.GUIUtils;
1717

1818
public class ColorActivity extends Activity {
1919

@@ -62,7 +62,7 @@ public void onViewAttachedToWindow(View v) {
6262
getTheme().resolveAttribute(android.R.attr.colorPrimary, outValue, true);
6363
revealView.setBackgroundColor(outValue.data);
6464

65-
Utils.hideRevealEffect(revealView, cx, cy, 1920);
65+
GUIUtils.hideRevealEffect(revealView, cx, cy, 1920);
6666
}
6767

6868
@Override
@@ -136,7 +136,7 @@ public void view(View view) {
136136
view.getLocationOnScreen(location);
137137

138138
int cx = (location[0] + (view.getWidth() / 2));
139-
int cy = location[1] + (Utils.getStatusBarHeight(this) / 2);
139+
int cy = location[1] + (GUIUtils.getStatusBarHeight(this) / 2);
140140

141141
SharedPreferences.Editor ed = sharedpreferences.edit();
142142
ed.putInt("x", cx);
@@ -145,7 +145,7 @@ public void view(View view) {
145145
ed.apply();
146146

147147
hideNavigationStatus();
148-
Utils.showRevealEFfect(revealView, cx, cy, revealAnimationListener);
148+
GUIUtils.showRevealEffect(revealView, cx, cy, revealAnimationListener);
149149
}
150150

151151

Lines changed: 129 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
1-
/*
2-
* Copyright 2013 The Android Open Source Project
3-
*
4-
* Licensed under the Apache License, Version 2.0 (the "License");
5-
* you may not use this file except in compliance with the License.
6-
* You may obtain a copy of the License at
7-
*
8-
* http://www.apache.org/licenses/LICENSE-2.0
9-
*
10-
* Unless required by applicable law or agreed to in writing, software
11-
* distributed under the License is distributed on an "AS IS" BASIS,
12-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-
* See the License for the specific language governing permissions and
14-
* limitations under the License.
15-
*/
1+
162

173
package com.saulmm.material.activities;
184

5+
import android.graphics.Point;
196
import android.os.Bundle;
207
import android.support.v4.view.ViewPager;
218
import android.support.v7.app.ActionBarActivity;
229
import android.support.v7.widget.Toolbar;
10+
import android.view.Display;
11+
import android.view.View;
12+
import android.view.animation.Animation;
13+
import android.view.animation.AnimationUtils;
14+
import android.widget.ArrayAdapter;
15+
import android.widget.FrameLayout;
16+
import android.widget.GridView;
17+
import android.widget.ImageButton;
2318

2419
import com.saulmm.material.R;
25-
import com.saulmm.material.views.adapters.DialerPagerAdapter;
20+
import com.saulmm.material.utils.GUIUtils;
21+
import com.saulmm.material.views.adapters.SamplePagerAdapter;
2622
import com.saulmm.material.views.widgets.SlidingTabLayout;
2723

28-
public class DialerSampleActivity extends ActionBarActivity {
24+
public class DialerSampleActivity extends ActionBarActivity implements ViewPager.OnPageChangeListener {
25+
26+
private int screenWidth;
27+
private ImageButton fabButton;
28+
private FrameLayout dialerKeysContainer;
29+
private float absolutefabPosition;
2930

3031
@Override
3132
protected void onCreate(Bundle savedInstanceState) {
@@ -35,22 +36,129 @@ protected void onCreate(Bundle savedInstanceState) {
3536

3637
configureToolbar();
3738
configurePager();
39+
configureFab();
40+
configureDialer();
41+
42+
dialerKeysContainer = (FrameLayout) findViewById(R.id.activity_dialer_frame_container);
43+
44+
// Get the screen with
45+
Display display = getWindowManager().getDefaultDisplay();
46+
Point size = new Point();
47+
display.getSize(size);
48+
screenWidth = size.x;
49+
}
50+
51+
private void configureFab() {
52+
53+
fabButton = (ImageButton) findViewById(R.id.view_fab_button);
54+
fabButton.setOnClickListener(new View.OnClickListener() {
55+
@Override
56+
public void onClick(View v) {
57+
58+
absolutefabPosition = v.getX();
59+
GUIUtils.hideViewByScale(fabButton);
60+
dialerKeysContainer.setVisibility(View.VISIBLE);
61+
62+
Animation showDialerContainerAnimation = AnimationUtils.loadAnimation(DialerSampleActivity.this, R.anim.translate_down_on);
63+
showDialerContainerAnimation.setAnimationListener(new Animation.AnimationListener() {
64+
@Override
65+
public void onAnimationStart(Animation animation) {}
66+
67+
@Override
68+
public void onAnimationEnd(Animation animation) {
69+
70+
fabButton.setBackgroundResource(R.drawable.ripple_dialer_call);
71+
fabButton.setX(screenWidth / 2 - fabButton.getWidth() / 2);
72+
GUIUtils.showViewByScale(fabButton);
73+
}
74+
75+
@Override
76+
public void onAnimationRepeat(Animation animation) {}
77+
});
78+
79+
dialerKeysContainer.startAnimation(showDialerContainerAnimation);
80+
}
81+
});
3882
}
3983

4084
private void configureToolbar() {
4185

4286
Toolbar mainToolbar = (Toolbar) findViewById(R.id.activity_dialer_toolbar);
4387
mainToolbar.setTitleTextColor(getResources().getColor(R.color.theme_dialer_accent));
4488
setSupportActionBar(mainToolbar);
45-
getSupportActionBar().setTitle("Sliding");
89+
getSupportActionBar().setTitle("Dialer");
4690
}
4791

4892
private void configurePager() {
4993

50-
ViewPager mViewPager = (ViewPager) findViewById(R.id.activity_dialer_pager);
51-
mViewPager.setAdapter(new DialerPagerAdapter(this));
94+
ViewPager tabsViewPAger = (ViewPager) findViewById(R.id.activity_dialer_pager);
95+
tabsViewPAger.setAdapter(new SamplePagerAdapter(this));
96+
tabsViewPAger.setCurrentItem(1);
5297

5398
SlidingTabLayout mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.activity_dialer_tabs);
54-
mSlidingTabLayout.setViewPager(mViewPager);
99+
mSlidingTabLayout.addPagerListener(this);
100+
mSlidingTabLayout.setViewPager(tabsViewPAger);
101+
}
102+
103+
private void configureDialer() {
104+
105+
GridView dialerGrid = (GridView) findViewById(R.id.activity_dialer_pad);
106+
dialerGrid.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item_dialer,
107+
getResources().getStringArray(R.array.dialer_numbers)));
55108
}
109+
110+
@Override
111+
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
112+
113+
float fabButtonPosition = (screenWidth / 2 - fabButton.getWidth()) * positionOffset;
114+
115+
116+
if (fabButtonPosition != 0 && position != 1) {
117+
118+
absolutefabPosition = fabButtonPosition + (screenWidth/2 - fabButton.getWidth()/2);
119+
fabButton.setX(absolutefabPosition);
120+
}
121+
}
122+
123+
@Override
124+
public void onBackPressed() {
125+
126+
if (dialerKeysContainer.getVisibility() == View.VISIBLE) {
127+
128+
Animation hideAnimation = AnimationUtils.loadAnimation(this, R.anim.translate_down_off);
129+
hideAnimation.setAnimationListener(new Animation.AnimationListener() {
130+
@Override
131+
public void onAnimationStart(Animation animation) {
132+
133+
GUIUtils.hideViewByScale(fabButton);
134+
}
135+
136+
@Override
137+
public void onAnimationEnd(Animation animation) {
138+
139+
dialerKeysContainer.setVisibility(View.INVISIBLE);
140+
fabButton.setBackgroundResource(R.drawable.ripple_dialer_idle);
141+
GUIUtils.showViewByScale(fabButton);
142+
143+
fabButton.setX(absolutefabPosition);
144+
}
145+
146+
@Override
147+
public void onAnimationRepeat(Animation animation) {}
148+
});
149+
150+
dialerKeysContainer.startAnimation(hideAnimation);
151+
152+
153+
154+
} else {
155+
super.onBackPressed();
156+
}
157+
}
158+
159+
@Override
160+
public void onPageSelected(int position) {}
161+
162+
@Override
163+
public void onPageScrollStateChanged(int state) {}
56164
}

app/src/main/java/com/saulmm/material/activities/TransitionFirstActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import android.view.View;
99

1010
import com.saulmm.material.R;
11-
import com.saulmm.material.utils.Utils;
11+
import com.saulmm.material.utils.GUIUtils;
1212

1313
public class TransitionFirstActivity extends Activity {
1414

@@ -21,12 +21,12 @@ protected void onCreate(Bundle savedInstanceState) {
2121
setContentView(R.layout.activity_transition_first);
2222

2323
// Set explode animation when enter and exit the activity
24-
Utils.configureWindowEnterExitExplodeTransition(getWindow());
24+
GUIUtils.configureWindowEnterExitExplodeTransition(getWindow());
2525

2626
// Fab Button
2727
fabButton = findViewById(R.id.fab_button);
2828
fabButton.setOnClickListener(fabClickListener);
29-
Utils.configureFab(fabButton);
29+
GUIUtils.configureFab(fabButton);
3030
}
3131

3232

app/src/main/java/com/saulmm/material/activities/TransitionSecondActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import android.widget.LinearLayout;
1010

1111
import com.saulmm.material.R;
12-
import com.saulmm.material.utils.Utils;
12+
import com.saulmm.material.utils.GUIUtils;
1313

1414
public class TransitionSecondActivity extends Activity {
1515

@@ -25,7 +25,7 @@ protected void onCreate(Bundle savedInstanceState) {
2525

2626
rowContainer = (LinearLayout) findViewById(R.id.row_container2);
2727

28-
Utils.configureWindowEnterExitExplodeTransition(getWindow());
28+
GUIUtils.configureWindowEnterExitExplodeTransition(getWindow());
2929

3030
getWindow().getEnterTransition().addListener(new Transition.TransitionListener() {
3131
@Override

app/src/main/java/com/saulmm/material/fragments/NavigationFragment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
public class NavigationFragment extends Fragment {
1313

1414
@Override
15-
public View onCreateView(LayoutInflater inflater, ViewGroup container,
16-
Bundle savedInstanceState) {
15+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
1716

1817
return inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
1918
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.saulmm.material.fragments;
2+
3+
import android.app.Fragment;
4+
import android.os.Bundle;
5+
import android.support.annotation.Nullable;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
10+
import com.saulmm.material.R;
11+
12+
public class SamplePageFragment extends Fragment {
13+
14+
@Nullable
15+
@Override
16+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
17+
18+
View rootView = inflater.inflate(R.layout.fragment_dialer_sample_page, container);
19+
20+
return rootView;
21+
}
22+
}

app/src/main/java/com/saulmm/material/fragments/SlidingTabFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ public class SlidingTabFragment extends Fragment {
3434
static final String LOG_TAG = "SlidingTabsBasicFragment";
3535

3636
@Override
37-
public View onCreateView(LayoutInflater inflater, ViewGroup container,
38-
Bundle savedInstanceState) {
39-
return inflater.inflate(R.layout.fragment_sliding, container, false);
37+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
38+
39+
return inflater.inflate(R.layout.fragment_dialer_sliding, container, false);
4040
}
4141

4242
@Override

app/src/main/java/com/saulmm/material/utils/Utils.java renamed to app/src/main/java/com/saulmm/material/utils/GUIUtils.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@
1010
import android.transition.Slide;
1111
import android.view.View;
1212
import android.view.ViewAnimationUtils;
13+
import android.view.ViewPropertyAnimator;
1314
import android.view.Window;
1415
import android.view.animation.PathInterpolator;
1516

1617
import com.saulmm.material.R;
1718

18-
public class Utils {
19+
public class GUIUtils {
20+
21+
public static final int SCALE_FACTOR = 30;
1922

2023
public static void configureWindowEnterExitExplodeTransition(Window w) {
2124

@@ -68,7 +71,7 @@ public void onAnimationEnd(Animator animation) {
6871
anim.start();
6972
}
7073

71-
public static void showRevealEFfect (final View v, int centerX, int centerY, Animator.AnimatorListener lis) {
74+
public static void showRevealEffect(final View v, int centerX, int centerY, Animator.AnimatorListener lis) {
7275

7376
v.setVisibility(View.VISIBLE);
7477

@@ -84,4 +87,22 @@ public static void showRevealEFfect (final View v, int centerX, int centerY, Ani
8487
}
8588

8689

90+
91+
public static void hideViewByScale(View view) {
92+
93+
ViewPropertyAnimator propertyAnimator = view.animate().setStartDelay(SCALE_FACTOR)
94+
.scaleX(0).scaleY(0);
95+
96+
propertyAnimator.start();
97+
}
98+
99+
public static void showViewByScale(View view) {
100+
101+
ViewPropertyAnimator propertyAnimator = view.animate().setStartDelay(SCALE_FACTOR)
102+
.scaleX(1).scaleY(1);
103+
104+
propertyAnimator.start();
105+
}
106+
107+
87108
}

0 commit comments

Comments
 (0)