diff --git a/.idea/misc.xml b/.idea/misc.xml index b0c7b20..e0d5b93 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,7 +29,7 @@ - + diff --git a/app/src/main/java/com/teamll/expectlauncher/activities/MainActivity.java b/app/src/main/java/com/teamll/expectlauncher/activities/MainActivity.java index 0909db9..055dd33 100644 --- a/app/src/main/java/com/teamll/expectlauncher/activities/MainActivity.java +++ b/app/src/main/java/com/teamll/expectlauncher/activities/MainActivity.java @@ -1,22 +1,38 @@ package com.teamll.expectlauncher.activities; import android.content.Intent; +import android.content.res.Resources; import android.graphics.Bitmap; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.widget.Toolbar; import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.widget.ImageView; import com.teamll.expectlauncher.R; +import com.teamll.expectlauncher.adapters.AppListAdapter; +import com.teamll.expectlauncher.config.AppItemConfig; import com.teamll.expectlauncher.fragments.AppDrawerFragment; import com.teamll.expectlauncher.fragments.MainScreenFragment; import com.teamll.expectlauncher.ultilities.Tool; public class MainActivity extends AppCompatActivity implements Tool.WallpaperChangedNotifier { + private Toolbar toolbarResizeIcon; + private AppDrawerFragment appDrawerFragment; + + private final int SMALL_ICON_WIDTH = 45; + private final int SMALL_ICON_HEIGHT = 45; + private final int MEDIUM_ICON_WIDTH = 55; + private final int MEDIUM_ICON_HEIGHT = 55; + private final int LARGE_ICON_WIDTH = 65; + private final int LARGE_ICON_HEIGHT = 65; @Override protected void onResume() { super.onResume(); @@ -49,6 +65,15 @@ protected void onCreate(Bundle savedInstanceState) { getWindow().getDecorView() .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } + + toolbarResizeIcon = findViewById(R.id.toolbarResizeIcon); + setSupportActionBar(toolbarResizeIcon); + getSupportActionBar().hide(); + //toolbarResizeIcon.setVisibility(View.INVISIBLE); + + appDrawerFragment = new AppDrawerFragment(); + + } @Override @@ -76,9 +101,10 @@ protected void onNewIntent(Intent intent) { public void openAppDrawer() { getSupportFragmentManager().beginTransaction() - .replace(R.id.container, new AppDrawerFragment()) + .replace(R.id.container, appDrawerFragment) .commitNow(); mode = 1; + getSupportActionBar().show(); } @Override @@ -110,4 +136,39 @@ public void onDetachedFromWindow() { public boolean dispatchKeyEvent(KeyEvent event) { return (event.getKeyCode() == KeyEvent.KEYCODE_HOME) || super.dispatchKeyEvent(event); } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.popupmenu_resize_icon, menu); + + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + // action with ID action_refresh was selected + case R.id.small_size: + ((AppListAdapter)appDrawerFragment.recyclerView.getAdapter()).setNewIconSize(SMALL_ICON_WIDTH, SMALL_ICON_HEIGHT); + appDrawerFragment.recyclerView.removeAllViewsInLayout(); + ((AppListAdapter)appDrawerFragment.recyclerView.getAdapter()).notifyDataSetChanged(); + break; + // action with ID action_settings was selected + case R.id.medium_size: + ((AppListAdapter)appDrawerFragment.recyclerView.getAdapter()).setNewIconSize(MEDIUM_ICON_WIDTH,MEDIUM_ICON_HEIGHT); + appDrawerFragment.recyclerView.removeAllViewsInLayout(); + ((AppListAdapter)appDrawerFragment.recyclerView.getAdapter()).notifyDataSetChanged(); + break; + case R.id.large_size: + ((AppListAdapter)appDrawerFragment.recyclerView.getAdapter()).setNewIconSize(LARGE_ICON_WIDTH,LARGE_ICON_HEIGHT); + appDrawerFragment.recyclerView.removeAllViewsInLayout(); + ((AppListAdapter)appDrawerFragment.recyclerView.getAdapter()).notifyDataSetChanged(); + break; + default: + break; + } + + return true; + } } diff --git a/app/src/main/java/com/teamll/expectlauncher/adapters/AppListAdapter.java b/app/src/main/java/com/teamll/expectlauncher/adapters/AppListAdapter.java index 77b8d54..552efe3 100644 --- a/app/src/main/java/com/teamll/expectlauncher/adapters/AppListAdapter.java +++ b/app/src/main/java/com/teamll/expectlauncher/adapters/AppListAdapter.java @@ -2,21 +2,26 @@ import android.annotation.TargetApi; import android.content.Context; +import android.content.res.Resources; import android.os.Build; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.teamll.expectlauncher.R; +import com.teamll.expectlauncher.config.AppItemConfig; import com.teamll.expectlauncher.others.AppModel; import com.teamll.expectlauncher.helper.ItemTouchHelperAdapter; import com.teamll.expectlauncher.helper.ItemTouchHelperViewHolder; import com.teamll.expectlauncher.helper.OnStartDragListener; +import com.teamll.expectlauncher.ultilities.Tool; import java.util.ArrayList; import java.util.Collection; @@ -24,12 +29,19 @@ import java.util.List; + public class AppListAdapter extends RecyclerView.Adapter implements ItemTouchHelperAdapter { private Context mContext; private List mData = new ArrayList<>(); private final OnStartDragListener mDragStartListener; + private int iconDefaultWidth = 55; + private int iconDefaultHeight = 55; private ItemClickListener mClickListener; + public static int iconWidth; + public static int iconHeight; + + public static float oneDp; public AppListAdapter(Context context, List data, OnStartDragListener dragStartListener) { @@ -38,6 +50,10 @@ public AppListAdapter(Context context, List data, OnStartDragListener if(data!=null) this.mData = data; + + oneDp = Tool.getOneDps(context); + iconWidth = (int)(iconDefaultWidth*oneDp); + iconHeight = (int)(iconDefaultHeight*oneDp); } public void setData(ArrayList data) { mData.clear(); @@ -90,6 +106,12 @@ public void onItemDismiss(int position) { notifyItemRemoved(position); } + public void setNewIconSize(int width, int height){ + + AppListAdapter.iconWidth = (int)(width*oneDp); + AppListAdapter.iconHeight = (int)(height*oneDp); + } + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, ItemTouchHelperViewHolder { ImageView icon; TextView text; @@ -98,9 +120,9 @@ public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickL ViewHolder(View itemView) { super(itemView); root = itemView; - icon = itemView.findViewById(R.id.icon); - text = itemView.findViewById(R.id.text); - itemView.setOnClickListener(this); + icon = itemView.findViewById(R.id.icon); + text = itemView.findViewById(R.id.text); + itemView.setOnClickListener(this); } @Override @@ -111,8 +133,12 @@ public void onClick(View view) { } } void bind(AppModel appModel) { + text.setText(appModel.getLabel()); icon.setImageDrawable(appModel.getIcon()); + icon.getLayoutParams().width = AppListAdapter.iconWidth; + icon.getLayoutParams().height = AppListAdapter.iconHeight; + //Toast.makeText(mContext, String.format("%s - %dx%d",text.getText().toString(), icon.getLayoutParams().width, icon.getLayoutParams().height).toString(), Toast.LENGTH_SHORT).show(); /* icon.setOnTouchListener(new View.OnTouchListener() { @Override diff --git a/app/src/main/java/com/teamll/expectlauncher/config/AppItemConfig.java b/app/src/main/java/com/teamll/expectlauncher/config/AppItemConfig.java new file mode 100644 index 0000000..9ed7619 --- /dev/null +++ b/app/src/main/java/com/teamll/expectlauncher/config/AppItemConfig.java @@ -0,0 +1,6 @@ +package com.teamll.expectlauncher.config; + +public class AppItemConfig { + public static int iconWidth = 80; + public static int iconHeight = 80; +} diff --git a/app/src/main/java/com/teamll/expectlauncher/fragments/AppDrawerFragment.java b/app/src/main/java/com/teamll/expectlauncher/fragments/AppDrawerFragment.java index 5c3af7c..a918aad 100644 --- a/app/src/main/java/com/teamll/expectlauncher/fragments/AppDrawerFragment.java +++ b/app/src/main/java/com/teamll/expectlauncher/fragments/AppDrawerFragment.java @@ -12,11 +12,16 @@ import android.support.v4.content.Loader; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.DisplayMetrics; +import android.util.TypedValue; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.PopupMenu; import com.teamll.expectlauncher.R; import com.teamll.expectlauncher.adapters.AppListAdapter; @@ -33,8 +38,9 @@ public class AppDrawerFragment extends Fragment implements AppListAdapter.ItemCl View rootView; Activity activity; AppListAdapter mAdapter; - RecyclerView recyclerView; + public RecyclerView recyclerView; ItemTouchHelper mItemTouchHelper; + ImageButton popupMenu; float statusBarHeight = 0; float navigationHeight = 0; @@ -54,6 +60,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c activity = getActivity(); rootView = inflater.inflate(R.layout.app_drawer_fragment,container,false); recyclerView = rootView.findViewById(R.id.appListRecyclerView); + //popupMenu = rootView.findViewById(R.id.popupMenu); // setEmptyText("No Applications"); setScreenProperties(); setAdapterForRecyclerView(); diff --git a/app/src/main/res/drawable/popup_menu_icon.png b/app/src/main/res/drawable/popup_menu_icon.png new file mode 100644 index 0000000..f35f47e Binary files /dev/null and b/app/src/main/res/drawable/popup_menu_icon.png differ diff --git a/app/src/main/res/drawable/transparent.xml b/app/src/main/res/drawable/transparent.xml new file mode 100644 index 0000000..a8b409b --- /dev/null +++ b/app/src/main/res/drawable/transparent.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/app_drawer_fragment.xml b/app/src/main/res/layout/app_drawer_fragment.xml index 4bd7437..89aa278 100644 --- a/app/src/main/res/layout/app_drawer_fragment.xml +++ b/app/src/main/res/layout/app_drawer_fragment.xml @@ -1,15 +1,15 @@ - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_icon_text.xml b/app/src/main/res/layout/list_item_icon_text.xml index a20619d..e60c962 100644 --- a/app/src/main/res/layout/list_item_icon_text.xml +++ b/app/src/main/res/layout/list_item_icon_text.xml @@ -26,8 +26,8 @@ > + android:background="@android:color/transparent" + android:fitsSystemWindows="true"> + + + + diff --git a/app/src/main/res/menu/popupmenu_resize_icon.xml b/app/src/main/res/menu/popupmenu_resize_icon.xml new file mode 100644 index 0000000..ca609ad --- /dev/null +++ b/app/src/main/res/menu/popupmenu_resize_icon.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 5c300d7..2256d3e 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,4 +3,8 @@ 62dp 82dp 20dp + 62dp + 62dp + 40dp + 40dp \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index aaef518..ee061e4 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -6,6 +6,7 @@ @color/colorPrimary @color/colorPrimaryDark @color/colorAccent + true