Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
skydoves committed Oct 29, 2017
1 parent 1d43fa4 commit 2ac8ed1
Show file tree
Hide file tree
Showing 84 changed files with 3,181 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -14,6 +14,7 @@ gen/
out/

# Gradle files
/.idea
.gradle/
build/

Expand Down Expand Up @@ -52,4 +53,4 @@ google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
freeline_project_description.json
1 change: 1 addition & 0 deletions app/.gitignore
@@ -0,0 +1 @@
/build
25 changes: 25 additions & 0 deletions app/build.gradle
@@ -0,0 +1,25 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "com.skydoves.powermenu.powermenudemo"
minSdkVersion 17
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation 'com.android.support:appcompat-v7:27.0.0'
implementation 'com.android.support:design:27.0.0'
implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation project(":powermenu")
}
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
21 changes: 21 additions & 0 deletions app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.skydoves.powermenudemo">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
137 changes: 137 additions & 0 deletions app/src/main/java/com/skydoves/powermenudemo/MainActivity.java
@@ -0,0 +1,137 @@
package com.skydoves.powermenudemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

import com.skydoves.powermenu.CustomPowerMenu;
import com.skydoves.powermenu.OnMenuItemClickListener;
import com.skydoves.powermenu.PowerMenu;
import com.skydoves.powermenu.PowerMenuItem;
import com.skydoves.powermenudemo.customs.items.IconPowerMenuItem;

/**
* Developed by skydoves on 2017-10-29.
* Copyright (c) 2017 skydoves rights reserved.
*/

public class MainActivity extends AppCompatActivity {

private PowerMenu hamburgerMenu;
private PowerMenu profileMenu;
private CustomPowerMenu writeMenu;
private CustomPowerMenu alertMenu;
private CustomPowerMenu iconMenu;

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

hamburgerMenu = PowerMenuUtils.getHamburgerPowerMenu(this, onHamburgerItemClickListener);
profileMenu = PowerMenuUtils.getProfilePowerMenu(this, onProfileItemClickListener);
writeMenu = PowerMenuUtils.getWritePowerMenu(this, onWriteItemClickListener);
alertMenu = PowerMenuUtils.getAlertPowerMenu(this, onAlertItemClickListener);
iconMenu = PowerMenuUtils.getIconPowerMenu(this, onIconMenuItemClickListener);
}

private OnMenuItemClickListener<PowerMenuItem> onHamburgerItemClickListener = new OnMenuItemClickListener<PowerMenuItem>() {
@Override
public void onItemClick(int position, PowerMenuItem item) {
Toast.makeText(getBaseContext(), item.getTitle(), Toast.LENGTH_SHORT).show();
hamburgerMenu.setSelected(position);
hamburgerMenu.dismiss();
}
};

private OnMenuItemClickListener<PowerMenuItem> onProfileItemClickListener = new OnMenuItemClickListener<PowerMenuItem>() {
@Override
public void onItemClick(int position, PowerMenuItem item) {
Toast.makeText(getBaseContext(), item.getTitle(), Toast.LENGTH_SHORT).show();
profileMenu.dismiss();
}
};

private OnMenuItemClickListener<String> onWriteItemClickListener = new OnMenuItemClickListener<String>() {
@Override
public void onItemClick(int position, String title) {
Toast.makeText(getBaseContext(), title, Toast.LENGTH_SHORT).show();
writeMenu.dismiss();
}
};

private OnMenuItemClickListener<String> onAlertItemClickListener = new OnMenuItemClickListener<String>() {
@Override
public void onItemClick(int position, String title) {
Toast.makeText(getBaseContext(), title, Toast.LENGTH_SHORT).show();
alertMenu.dismiss();
}
};

private OnMenuItemClickListener<IconPowerMenuItem> onIconMenuItemClickListener = new OnMenuItemClickListener<IconPowerMenuItem>() {
@Override
public void onItemClick(int position, IconPowerMenuItem item) {
Toast.makeText(getBaseContext(), item.getTitle(), Toast.LENGTH_SHORT).show();
iconMenu.dismiss();
}
};

public void onHamburger(View view) {
if(hamburgerMenu.isShowing()) {
hamburgerMenu.dismiss();
return;
}
hamburgerMenu.showAsDropDown(view);
}

public void onProfile(View view) {
if(profileMenu.isShowing()) {
profileMenu.dismiss();
return;
}
profileMenu.showAsDropDown(view, -370, 0);
}

public void onWrite(View view) {
if(writeMenu.isShowing()) {
writeMenu.dismiss();
return;
}
View layout = findViewById(R.id.layout_main);
writeMenu.showAtCenter(layout);
}

public void onAlert(View view) {
if(alertMenu.isShowing()) {
alertMenu.dismiss();
return;
}
View layout = findViewById(R.id.layout_main);
alertMenu.showAtCenter(layout);
}

public void onShare(View view) {
if(iconMenu.isShowing()) {
iconMenu.dismiss();
return;
}
iconMenu.showAsDropDown(view, -370, 0);
}

@Override
public void onBackPressed() {
if(hamburgerMenu.isShowing())
hamburgerMenu.dismiss();
else if(profileMenu.isShowing())
profileMenu.dismiss();
else if(writeMenu.isShowing())
writeMenu.dismiss();
else if(alertMenu.isShowing())
alertMenu.dismiss();
else if(iconMenu.isShowing())
iconMenu.dismiss();
else
super.onBackPressed();
}
}
101 changes: 101 additions & 0 deletions app/src/main/java/com/skydoves/powermenudemo/PowerMenuUtils.java
@@ -0,0 +1,101 @@
package com.skydoves.powermenudemo;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.View;

import com.skydoves.powermenu.CustomPowerMenu;
import com.skydoves.powermenu.MenuAnimation;
import com.skydoves.powermenu.OnMenuItemClickListener;
import com.skydoves.powermenu.PowerMenu;
import com.skydoves.powermenu.PowerMenuItem;
import com.skydoves.powermenudemo.customs.adapters.CenterMenuAdapter;
import com.skydoves.powermenudemo.customs.adapters.IconMenuAdapter;
import com.skydoves.powermenudemo.customs.items.IconPowerMenuItem;

/**
* Developed by skydoves on 2017-10-29.
* Copyright (c) 2017 skydoves rights reserved.
*/

public class PowerMenuUtils {

public static PowerMenu getHamburgerPowerMenu(Context context, OnMenuItemClickListener onMenuItemClickListener) {
return new PowerMenu.Builder(context)
.addItem(new PowerMenuItem("Novel", true))
.addItem(new PowerMenuItem("Poetry", false))
.addItem(new PowerMenuItem("Art", false))
.addItem(new PowerMenuItem("Journals", false))
.addItem(new PowerMenuItem("Travel", false))
.setAnimation(MenuAnimation.SHOWUP_TOP_LEFT)
.setMenuRadius(10f)
.setMenuShadow(10f)
.setTextColor(context.getResources().getColor(R.color.md_grey_800))
.setSelectedTextColor(Color.WHITE)
.setMenuColor(Color.WHITE)
.setSelectedMenuColor(context.getResources().getColor(R.color.colorPrimary))
.setOnMenuItemClickListener(onMenuItemClickListener)
.build();
}

public static PowerMenu getProfilePowerMenu(Context context, OnMenuItemClickListener onMenuItemClickListener) {
return new PowerMenu.Builder(context)
.addItem(new PowerMenuItem("Profile", false))
.addItem(new PowerMenuItem("Board", false))
.addItem(new PowerMenuItem("Logout", false))
.setAnimation(MenuAnimation.SHOWUP_TOP_RIGHT)
.setMenuRadius(10f)
.setMenuShadow(10f)
.setTextColor(context.getResources().getColor(R.color.md_grey_800))
.setMenuColor(Color.WHITE)
.setSelectedEffect(false)
.setOnMenuItemClickListener(onMenuItemClickListener)
.build();
}

public static CustomPowerMenu getWritePowerMenu(Context context, OnMenuItemClickListener onMenuItemClickListener) {
ColorDrawable drawable = new ColorDrawable(context.getResources().getColor(R.color.md_blue_grey_300));
return new CustomPowerMenu.Builder<>(context, new CenterMenuAdapter())
.addItem("Novel")
.addItem("Poetry")
.addItem("Art")
.addItem("Journals")
.addItem("Travel")
.setAnimation(MenuAnimation.FADE)
.setMenuRadius(10f)
.setMenuShadow(10f)
.setDivider(drawable)
.setDividerHeight(1)
.setOnMenuItemClickListener(onMenuItemClickListener)
.build();
}

public static CustomPowerMenu getAlertPowerMenu(Context context, OnMenuItemClickListener onMenuItemClickListener) {
return new CustomPowerMenu.Builder<>(context, new CenterMenuAdapter())
.addItem("You need to login!")
.setAnimation(MenuAnimation.ELASTIC_CENTER)
.setMenuRadius(10f)
.setMenuShadow(10f)
.setFocusable(true)
.setOnMenuItemClickListener(onMenuItemClickListener)
.setOnBackgroundClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
}).build();
}

public static CustomPowerMenu getIconPowerMenu(Context context, OnMenuItemClickListener onMenuItemClickListener) {
return new CustomPowerMenu.Builder<>(context, new IconMenuAdapter())
.addItem(new IconPowerMenuItem(context.getResources().getDrawable(R.drawable.ic_wechat), "WeChat"))
.addItem(new IconPowerMenuItem(context.getResources().getDrawable(R.drawable.ic_facebook), "Facebook"))
.addItem(new IconPowerMenuItem(context.getResources().getDrawable(R.drawable.ic_twitter), "Twitter"))
.addItem(new IconPowerMenuItem(context.getResources().getDrawable(R.drawable.ic_line), "Line"))
.setOnMenuItemClickListener(onMenuItemClickListener)
.setAnimation(MenuAnimation.SHOWUP_TOP_RIGHT)
.setMenuRadius(10f)
.setMenuShadow(10f)
.build();
}
}
@@ -0,0 +1,43 @@
package com.skydoves.powermenudemo.customs.adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.skydoves.powermenu.MenuBaseAdapter;
import com.skydoves.powermenudemo.R;

/**
* Developed by skydoves on 2017-10-28.
* Copyright (c) 2017 skydoves rights reserved.
*/

public class CenterMenuAdapter extends MenuBaseAdapter<String> {

public CenterMenuAdapter() {
super();
}

@Override
public View getView(int index, View view, ViewGroup viewGroup) {
final Context context = viewGroup.getContext();

if(view == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_title_menu, viewGroup, false);
}

String item = (String) getItem(index);
final TextView title = view.findViewById(R.id.item_title);
title.setText(item);
title.setTextColor(context.getResources().getColor(R.color.md_grey_800));
return view;
}

@Override
public void setSelected(int position) {
notifyDataSetChanged();
}
}

0 comments on commit 2ac8ed1

Please sign in to comment.