Add Slide Banner

This commit is contained in:
Nezumi2711
2022-06-29 19:34:42 +07:00
parent e0ee6f1f8a
commit 3f65237418
9 changed files with 155 additions and 31 deletions
+5
View File
@@ -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"
+1 -1
View File
@@ -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);
} }
} }
} }