From 3f6523741839a05b7401f0ea94d0e4ea34c161e8 Mon Sep 17 00:00:00 2001 From: Nezumi2711 <73208452+Nezumi2711@users.noreply.github.com> Date: Wed, 29 Jun 2022 19:34:42 +0700 Subject: [PATCH] Add Slide Banner --- Foodify/app/build.gradle | 5 ++ .../com/waterbase/foodify/FoodDetail.java | 10 +-- .../main/java/com/waterbase/foodify/Home.java | 77 +++++++++++++++++++ .../com/waterbase/foodify/Model/Banner.java | 38 +++++++++ .../com/waterbase/foodify/OrderDetail.java | 20 ++--- .../app/src/main/res/layout/content_home.xml | 21 +++-- .../main/res/layout/show_comment_layout.xml | 2 +- Foodify/app/src/main/res/values/colors.xml | 2 +- .../foodifyServer/TrackingOrder.java | 11 ++- 9 files changed, 155 insertions(+), 31 deletions(-) create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/Model/Banner.java diff --git a/Foodify/app/build.gradle b/Foodify/app/build.gradle index 0790b12..a945808 100644 --- a/Foodify/app/build.gradle +++ b/Foodify/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'androidx.navigation:navigation-fragment:2.3.5' implementation 'androidx.navigation:navigation-ui:2.3.5' implementation fileTree(dir: 'D:\\ZaloPay', include: ['*.aar', '*.jar'], exclude: []) + implementation fileTree(dir: 'D:\\ZaloPay', include: ['*.aar', '*.jar'], exclude: []) testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' @@ -77,6 +78,10 @@ dependencies { //CounterFAB implementation 'com.github.andremion:counterfab:1.2.2' + + //Slider + implementation 'com.nineoldandroids:library:2.4.0' + implementation 'com.daimajia.slider:library:1.1.5@aar' } apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java b/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java index 2284240..17ea91c 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java @@ -197,12 +197,12 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene .setDefaultRating(1) .setTitle("Đánh giá món ăn này") .setDescription("Vui lòng đánh giá và để lại bình luận dưới đây") - .setTitleTextColor(R.color.purple_500) - .setDescriptionTextColor(R.color.colorPrimary) + .setTitleTextColor(R.color.black) + .setDescriptionTextColor(R.color.black) .setHint("Điền đánh giá bạn tại đây") - .setHintTextColor(R.color.colorAccent) - .setCommentTextColor(android.R.color.white) - .setCommentBackgroundColor(R.color.colorPrimaryDark) + .setHintTextColor(R.color.purple_500) + .setCommentTextColor(R.color.purple_500) + .setCommentBackgroundColor(R.color.teal_200) .setWindowAnimation(R.style.RatingDialogFadeAnim) .create(FoodDetail.this) .show(); diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java index 7dfbc30..9d4218c 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java @@ -26,6 +26,10 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.andremion.counterfab.CounterFab; +import com.daimajia.slider.library.Animations.DescriptionAnimation; +import com.daimajia.slider.library.SliderLayout; +import com.daimajia.slider.library.SliderTypes.BaseSliderView; +import com.daimajia.slider.library.SliderTypes.TextSliderView; import com.firebase.ui.database.FirebaseRecyclerAdapter; import com.firebase.ui.database.FirebaseRecyclerOptions; import com.google.android.gms.tasks.OnCompleteListener; @@ -33,14 +37,18 @@ import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.Task; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.navigation.NavigationView; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; import com.google.firebase.iid.FirebaseInstanceId; import com.rengwuxian.materialedittext.MaterialEditText; import com.squareup.picasso.Picasso; import com.waterbase.foodify.Common.Common; import com.waterbase.foodify.Database.Database; import com.waterbase.foodify.Interface.ItemClickListener; +import com.waterbase.foodify.Model.Banner; import com.waterbase.foodify.Model.Category; import com.waterbase.foodify.Model.Token; import com.waterbase.foodify.ViewHolder.MenuViewHolder; @@ -68,6 +76,10 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati CounterFab fab; + //Slider + HashMap image_list; + SliderLayout mSlider; + @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)); @@ -198,12 +210,77 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati updateToken(FirebaseInstanceId.getInstance().getToken()); + //Setup Slider + setupSlider(); + + } + + private void setupSlider() { + mSlider = findViewById(R.id.slider); + image_list = new HashMap<>(); + + DatabaseReference banners = database.getReference("Banner"); + + banners.addValueEventListener(new ValueEventListener() { + @Override + public void onDataChange(DataSnapshot dataSnapshot) { + + for(DataSnapshot postSnapShot: dataSnapshot.getChildren()) + { + Banner banner = postSnapShot.getValue(Banner.class); + + image_list.put(banner.getName() + "@@@" + banner.getId(), banner.getImage()); + } + for(String key: image_list.keySet()) + { + String[] keySplit = key.split("@@@"); + String nameOfFood = keySplit[0]; + String idOfFood = keySplit[1]; + + //Create Slider + TextSliderView textSliderView = new TextSliderView(getBaseContext()); + textSliderView + .description(nameOfFood) + .image(image_list.get(key)) + .setScaleType(BaseSliderView.ScaleType.Fit) + .setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() { + @Override + public void onSliderClick(BaseSliderView slider) { + Intent intent = new Intent(Home.this, FoodDetail.class); + //Send Food id to another activity + intent.putExtras(textSliderView.getBundle()); + startActivity(intent); + } + }); + + //Add extra bundle + textSliderView.bundle(new Bundle()); + textSliderView.getBundle().putString("FoodId", idOfFood); + + mSlider.addSlider(textSliderView); + + //Remove event after finish + banners.removeEventListener(this); + } + } + + @Override + public void onCancelled(DatabaseError databaseError) { + + } + }); + + mSlider.setPresetTransformer(SliderLayout.Transformer.Background2Foreground); + mSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); + mSlider.setCustomAnimation(new DescriptionAnimation()); + mSlider.setDuration(4000); } @Override protected void onStop() { super.onStop(); adapter.stopListening(); + mSlider.stopAutoCycle(); } @Override diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Model/Banner.java b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Banner.java new file mode 100644 index 0000000..6330391 --- /dev/null +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Banner.java @@ -0,0 +1,38 @@ +package com.waterbase.foodify.Model; + +public class Banner { + private String id, name, image; + + public Banner(String id, String name, String image) { + this.id = id; + this.name = name; + this.image = image; + } + + public Banner() { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } +} diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java b/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java index 2a51289..490fa38 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java @@ -1,15 +1,6 @@ package com.waterbase.foodify; -import androidx.annotation.NonNull; -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.annotation.SuppressLint; -import android.app.AlertDialog; -import android.content.DialogInterface; import android.content.Intent; import android.os.Build; import android.os.Bundle; @@ -21,6 +12,13 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.google.android.material.button.MaterialButton; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; @@ -32,7 +30,6 @@ import com.waterbase.foodify.Common.Common; import com.waterbase.foodify.Database.Database; import com.waterbase.foodify.Model.MyResponse; import com.waterbase.foodify.Model.Notification; -import com.waterbase.foodify.Model.Order; import com.waterbase.foodify.Model.Request; import com.waterbase.foodify.Model.Sender; import com.waterbase.foodify.Model.Token; @@ -42,9 +39,6 @@ import com.waterbase.foodify.Zalopay.Api.CreateOrder; import org.json.JSONObject; -import java.util.ArrayList; -import java.util.List; - import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; diff --git a/Foodify/app/src/main/res/layout/content_home.xml b/Foodify/app/src/main/res/layout/content_home.xml index 78b747e..9988f15 100644 --- a/Foodify/app/src/main/res/layout/content_home.xml +++ b/Foodify/app/src/main/res/layout/content_home.xml @@ -8,11 +8,22 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/app_bar_home"> - - + android:layout_height="wrap_content"> + + + + + \ No newline at end of file diff --git a/Foodify/app/src/main/res/layout/show_comment_layout.xml b/Foodify/app/src/main/res/layout/show_comment_layout.xml index b275fb9..9504f59 100644 --- a/Foodify/app/src/main/res/layout/show_comment_layout.xml +++ b/Foodify/app/src/main/res/layout/show_comment_layout.xml @@ -32,7 +32,7 @@ #FFBB86FC #FF5353 #FF5353 - #FF03DAC5 + #ffec3d #FF018786 #FF000000 #FFFFFFFF diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/TrackingOrder.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/TrackingOrder.java index e33ed87..10ea282 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/TrackingOrder.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/TrackingOrder.java @@ -163,7 +163,7 @@ public class TrackingOrder extends FragmentActivity implements OnMapReadyCallbac .enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - new ParserTask().execute(response.body().toString()); + new ParserTask().execute(response.body()); } @Override @@ -307,12 +307,10 @@ public class TrackingOrder extends FragmentActivity implements OnMapReadyCallbac protected void onPostExecute(List>> lists) { mDialog.dismiss(); - ArrayList points; - PolylineOptions lineOptions = null; + ArrayList points = new ArrayList(); + PolylineOptions lineOptions = new PolylineOptions(); for(int i = 0; i < lists.size(); i++){ - points = new ArrayList(); - lineOptions = new PolylineOptions(); List> path = lists.get(i); @@ -331,7 +329,8 @@ public class TrackingOrder extends FragmentActivity implements OnMapReadyCallbac lineOptions.color(Color.RED); lineOptions.geodesic(true); } - mMap.addPolyline(lineOptions); + if(lineOptions != null) + mMap.addPolyline(lineOptions); } } } \ No newline at end of file