mirror of
https://github.com/Nezumi-2711/PRM392.git
synced 2026-09-22 13:48:29 +00:00
Add Slide Banner
This commit is contained in:
@@ -44,6 +44,7 @@ dependencies {
|
|||||||
implementation 'androidx.navigation:navigation-fragment:2.3.5'
|
implementation 'androidx.navigation:navigation-fragment:2.3.5'
|
||||||
implementation 'androidx.navigation:navigation-ui: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: [])
|
||||||
|
implementation fileTree(dir: 'D:\\ZaloPay', include: ['*.aar', '*.jar'], exclude: [])
|
||||||
testImplementation 'junit:junit:4.13.2'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||||
@@ -77,6 +78,10 @@ dependencies {
|
|||||||
|
|
||||||
//CounterFAB
|
//CounterFAB
|
||||||
implementation 'com.github.andremion:counterfab:1.2.2'
|
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'
|
apply plugin: 'com.google.gms.google-services'
|
||||||
@@ -197,12 +197,12 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene
|
|||||||
.setDefaultRating(1)
|
.setDefaultRating(1)
|
||||||
.setTitle("Đánh giá món ăn này")
|
.setTitle("Đánh giá món ăn này")
|
||||||
.setDescription("Vui lòng đánh giá và để lại bình luận dưới đây")
|
.setDescription("Vui lòng đánh giá và để lại bình luận dưới đây")
|
||||||
.setTitleTextColor(R.color.purple_500)
|
.setTitleTextColor(R.color.black)
|
||||||
.setDescriptionTextColor(R.color.colorPrimary)
|
.setDescriptionTextColor(R.color.black)
|
||||||
.setHint("Điền đánh giá bạn tại đây")
|
.setHint("Điền đánh giá bạn tại đây")
|
||||||
.setHintTextColor(R.color.colorAccent)
|
.setHintTextColor(R.color.purple_500)
|
||||||
.setCommentTextColor(android.R.color.white)
|
.setCommentTextColor(R.color.purple_500)
|
||||||
.setCommentBackgroundColor(R.color.colorPrimaryDark)
|
.setCommentBackgroundColor(R.color.teal_200)
|
||||||
.setWindowAnimation(R.style.RatingDialogFadeAnim)
|
.setWindowAnimation(R.style.RatingDialogFadeAnim)
|
||||||
.create(FoodDetail.this)
|
.create(FoodDetail.this)
|
||||||
.show();
|
.show();
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
import com.andremion.counterfab.CounterFab;
|
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.FirebaseRecyclerAdapter;
|
||||||
import com.firebase.ui.database.FirebaseRecyclerOptions;
|
import com.firebase.ui.database.FirebaseRecyclerOptions;
|
||||||
import com.google.android.gms.tasks.OnCompleteListener;
|
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.gms.tasks.Task;
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
import com.google.android.material.navigation.NavigationView;
|
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.DatabaseReference;
|
||||||
import com.google.firebase.database.FirebaseDatabase;
|
import com.google.firebase.database.FirebaseDatabase;
|
||||||
|
import com.google.firebase.database.ValueEventListener;
|
||||||
import com.google.firebase.iid.FirebaseInstanceId;
|
import com.google.firebase.iid.FirebaseInstanceId;
|
||||||
import com.rengwuxian.materialedittext.MaterialEditText;
|
import com.rengwuxian.materialedittext.MaterialEditText;
|
||||||
import com.squareup.picasso.Picasso;
|
import com.squareup.picasso.Picasso;
|
||||||
import com.waterbase.foodify.Common.Common;
|
import com.waterbase.foodify.Common.Common;
|
||||||
import com.waterbase.foodify.Database.Database;
|
import com.waterbase.foodify.Database.Database;
|
||||||
import com.waterbase.foodify.Interface.ItemClickListener;
|
import com.waterbase.foodify.Interface.ItemClickListener;
|
||||||
|
import com.waterbase.foodify.Model.Banner;
|
||||||
import com.waterbase.foodify.Model.Category;
|
import com.waterbase.foodify.Model.Category;
|
||||||
import com.waterbase.foodify.Model.Token;
|
import com.waterbase.foodify.Model.Token;
|
||||||
import com.waterbase.foodify.ViewHolder.MenuViewHolder;
|
import com.waterbase.foodify.ViewHolder.MenuViewHolder;
|
||||||
@@ -68,6 +76,10 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
|||||||
|
|
||||||
CounterFab fab;
|
CounterFab fab;
|
||||||
|
|
||||||
|
//Slider
|
||||||
|
HashMap<String, String> image_list;
|
||||||
|
SliderLayout mSlider;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void attachBaseContext(Context newBase) {
|
protected void attachBaseContext(Context newBase) {
|
||||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase));
|
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase));
|
||||||
@@ -198,12 +210,77 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
|||||||
|
|
||||||
updateToken(FirebaseInstanceId.getInstance().getToken());
|
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
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
adapter.stopListening();
|
adapter.stopListening();
|
||||||
|
mSlider.stopAutoCycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,15 +1,6 @@
|
|||||||
package com.waterbase.foodify;
|
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.annotation.SuppressLint;
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -21,6 +12,13 @@ import android.view.View;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
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.android.material.button.MaterialButton;
|
||||||
import com.google.firebase.database.DataSnapshot;
|
import com.google.firebase.database.DataSnapshot;
|
||||||
import com.google.firebase.database.DatabaseError;
|
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.Database.Database;
|
||||||
import com.waterbase.foodify.Model.MyResponse;
|
import com.waterbase.foodify.Model.MyResponse;
|
||||||
import com.waterbase.foodify.Model.Notification;
|
import com.waterbase.foodify.Model.Notification;
|
||||||
import com.waterbase.foodify.Model.Order;
|
|
||||||
import com.waterbase.foodify.Model.Request;
|
import com.waterbase.foodify.Model.Request;
|
||||||
import com.waterbase.foodify.Model.Sender;
|
import com.waterbase.foodify.Model.Sender;
|
||||||
import com.waterbase.foodify.Model.Token;
|
import com.waterbase.foodify.Model.Token;
|
||||||
@@ -42,9 +39,6 @@ import com.waterbase.foodify.Zalopay.Api.CreateOrder;
|
|||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
|
|||||||
@@ -8,11 +8,22 @@
|
|||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||||
tools:showIn="@layout/app_bar_home">
|
tools:showIn="@layout/app_bar_home">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
android:orientation="vertical"
|
||||||
android:id="@+id/recyler_menu"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content">
|
||||||
android:scrollbars="vertical" />
|
|
||||||
|
|
||||||
|
<com.daimajia.slider.library.SliderLayout
|
||||||
|
android:id="@+id/slider"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="200dp"/>
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recyler_menu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:scrollbars="vertical" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<RatingBar
|
<RatingBar
|
||||||
android:id="@+id/ratingBar"
|
android:id="@+id/ratingBar"
|
||||||
style="?android:attr/ratingBarStyleSmall"
|
style="?android:attr/ratingBarStyleSmall"
|
||||||
android:layout_marginLeft="150dp"
|
android:layout_marginLeft="140dp"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:rating="3"
|
android:rating="3"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<color name="purple_200">#FFBB86FC</color>
|
<color name="purple_200">#FFBB86FC</color>
|
||||||
<color name="purple_500">#FF5353</color>
|
<color name="purple_500">#FF5353</color>
|
||||||
<color name="purple_700">#FF5353</color>
|
<color name="purple_700">#FF5353</color>
|
||||||
<color name="teal_200">#FF03DAC5</color>
|
<color name="teal_200">#ffec3d</color>
|
||||||
<color name="teal_700">#FF018786</color>
|
<color name="teal_700">#FF018786</color>
|
||||||
<color name="black">#FF000000</color>
|
<color name="black">#FF000000</color>
|
||||||
<color name="white">#FFFFFFFF</color>
|
<color name="white">#FFFFFFFF</color>
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ public class TrackingOrder extends FragmentActivity implements OnMapReadyCallbac
|
|||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<String> call, Response<String> response) {
|
public void onResponse(Call<String> call, Response<String> response) {
|
||||||
new ParserTask().execute(response.body().toString());
|
new ParserTask().execute(response.body());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -307,12 +307,10 @@ public class TrackingOrder extends FragmentActivity implements OnMapReadyCallbac
|
|||||||
protected void onPostExecute(List<List<HashMap<String, String>>> lists) {
|
protected void onPostExecute(List<List<HashMap<String, String>>> lists) {
|
||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
|
|
||||||
ArrayList points;
|
ArrayList points = new ArrayList();
|
||||||
PolylineOptions lineOptions = null;
|
PolylineOptions lineOptions = new PolylineOptions();
|
||||||
|
|
||||||
for(int i = 0; i < lists.size(); i++){
|
for(int i = 0; i < lists.size(); i++){
|
||||||
points = new ArrayList();
|
|
||||||
lineOptions = new PolylineOptions();
|
|
||||||
|
|
||||||
List<HashMap<String, String>> path = lists.get(i);
|
List<HashMap<String, String>> path = lists.get(i);
|
||||||
|
|
||||||
@@ -331,7 +329,8 @@ public class TrackingOrder extends FragmentActivity implements OnMapReadyCallbac
|
|||||||
lineOptions.color(Color.RED);
|
lineOptions.color(Color.RED);
|
||||||
lineOptions.geodesic(true);
|
lineOptions.geodesic(true);
|
||||||
}
|
}
|
||||||
mMap.addPolyline(lineOptions);
|
if(lineOptions != null)
|
||||||
|
mMap.addPolyline(lineOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user