Skip to content

Commit

Permalink
Completed Wallpaper Application
Browse files Browse the repository at this point in the history
  • Loading branch information
muhsan-javed committed Jun 7, 2023
1 parent dd23b69 commit 4c45a5b
Show file tree
Hide file tree
Showing 27 changed files with 330 additions and 80 deletions.
9 changes: 8 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/Theme.PexelsWallpaper">
<activity android:name=".FullScreenWallpaper">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.mjtech.pexelswallpaper;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatImageButton;

import android.app.DownloadManager;
import android.app.WallpaperManager;
Expand All @@ -17,16 +18,19 @@
import com.github.chrisbanes.photoview.PhotoView;

import java.io.IOException;
import java.util.Objects;

public class FullScreenWallpaper extends AppCompatActivity {

AppCompatImageButton btnBackButton;
PhotoView photoView;
String originalUrl = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_full_screen_wallpaper);

getSupportActionBar().hide();
Objects.requireNonNull(getSupportActionBar()).hide();

Intent intent = getIntent();
originalUrl = intent.getStringExtra("originalUrl");
Expand All @@ -35,6 +39,12 @@ protected void onCreate(Bundle savedInstanceState) {

Glide.with(this).load(originalUrl).into(photoView);

btnBackButton = findViewById(R.id.btnBackButton);

btnBackButton.setOnClickListener(v -> {
finish();
});

}

public void SetWallpaperEvent(View view) throws IOException {
Expand Down
185 changes: 154 additions & 31 deletions app/src/main/java/com/mjtech/pexelswallpaper/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,22 @@
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatEditText;
import androidx.appcompat.widget.AppCompatImageButton;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
Expand All @@ -33,38 +38,44 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

public class MainActivity extends AppCompatActivity {

RecyclerView recyclerView;
AppCompatEditText edittext;
AppCompatImageButton searchOption;
WallpaperAdapter wallpaperAdapter;
List<WallpaperModel> wallpaperModelList;
int pageNumber = 1;
Boolean isScrolling = false;
int currentItems,totalItems,scrollOutItems;
Boolean isScrolling = false;
int currentItems, totalItems, scrollOutItems;
//String url = "https://api.pexels.com/v1/curated/?page=\"+pageNumber+ \"&per_page=80";
// String url = "https://api.pexels.com/v1/curated/?page="+pageNumber+"&per_page=80";
// String url = "https://api.pexels.com/v1/curated/?page=\"+pageNumber+\"&per_page=80";


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

//getSupportActionBar().hide();
Objects.requireNonNull(getSupportActionBar()).hide();

recyclerView = findViewById(R.id.recyclerView);
searchOption = findViewById(R.id.searchOption);
edittext = findViewById(R.id.edittext);
wallpaperModelList = new ArrayList<>();
wallpaperAdapter = new WallpaperAdapter(this,wallpaperModelList);
wallpaperAdapter = new WallpaperAdapter(this, wallpaperModelList);

recyclerView.setAdapter(wallpaperAdapter);

GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
isScrolling = true;
}
}
Expand All @@ -77,7 +88,7 @@ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
totalItems = gridLayoutManager.getItemCount();
scrollOutItems = gridLayoutManager.findFirstCompletelyVisibleItemPosition();

if (isScrolling && (currentItems + scrollOutItems == totalItems)){
if (isScrolling && (currentItems + scrollOutItems == totalItems)) {
isScrolling = false;
fetchWallpaper();
}
Expand All @@ -87,22 +98,79 @@ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
});
fetchWallpaper();

searchOption.setOnClickListener(v -> {
String query = edittext.getText().toString().trim().toLowerCase();
wallpaperModelList.clear();
StringRequest request = new StringRequest(Request.Method.GET, "https://api.pexels.com/v1/search/?page=" + pageNumber + "&per_page=80&query=" + query,
new Response.Listener<String>() {
@SuppressLint("NotifyDataSetChanged")
@Override
public void onResponse(String response) {

try {
JSONObject jsonObject = new JSONObject(response);

JSONArray jsonArray = jsonObject.getJSONArray("photos");

int length = jsonArray.length();

for (int i = 0; i < length; i++) {

JSONObject object = jsonArray.getJSONObject(i);

int id = object.getInt("id");

JSONObject objectImages = object.getJSONObject("src");

String originalUrl = objectImages.getString("original");
String mediumUrl = objectImages.getString("medium");

WallpaperModel wallpaperModel = new WallpaperModel(id, originalUrl, mediumUrl);
wallpaperModelList.add(wallpaperModel);
}

wallpaperAdapter.notifyDataSetChanged();
pageNumber++;

} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "ERROR" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}, error -> {

}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Authorization", "563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57");
return params;
}
};

RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(request);
});

}
// Uri https://api.pexels.com/v1/curated/?page="+pageNumber+"&per_page=80
public void fetchWallpaper(){
StringRequest request = new StringRequest(Request.Method.GET, "https://api.pexels.com/v1/curated/?page="+pageNumber+"&per_page=80",

// Uri https://api.pexels.com/v1/curated/?page="+pageNumber+"&per_page=80
public void fetchWallpaper() {
StringRequest request = new StringRequest(Request.Method.GET, "https://api.pexels.com/v1/curated/?page=" + pageNumber + "&per_page=80",
// StringRequest request = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@SuppressLint("NotifyDataSetChanged")
@Override
public void onResponse(String response) {

try {
JSONObject jsonObject = new JSONObject(response);

JSONArray jsonArray = jsonObject.getJSONArray("photos");
JSONArray jsonArray = jsonObject.getJSONArray("photos");

int length = jsonArray.length();

for (int i =0; i<length;i++){
for (int i = 0; i < length; i++) {

JSONObject object = jsonArray.getJSONObject(i);

Expand All @@ -113,30 +181,30 @@ public void onResponse(String response) {
String originalUrl = objectImages.getString("original");
String mediumUrl = objectImages.getString("medium");

WallpaperModel wallpaperModel = new WallpaperModel(id,originalUrl,mediumUrl);
WallpaperModel wallpaperModel = new WallpaperModel(id, originalUrl, mediumUrl);
wallpaperModelList.add(wallpaperModel);
}

wallpaperAdapter.notifyDataSetChanged();
pageNumber++;

}catch (JSONException e){
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "ERROR"+ e.getMessage(), Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "ERROR" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

}
}){
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {

Map<String, String> params = new HashMap<>();
// params.put("Authorization","563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57");
params.put("Authorization","563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57");
params.put("Authorization", "563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57");

return params;
}
Expand All @@ -145,6 +213,8 @@ public Map<String, String> getHeaders() throws AuthFailureError {
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(request);
}

/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
Expand All @@ -163,27 +233,80 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
alert.setTitle("Search Wallpaper");
alert.setView(editText);
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String query = editText.getText().toString().toLowerCase();
alert.setPositiveButton("Yes", (dialog, which) -> {
// url = "https://api.pexels.com/v1/search/?page="+pageNumber+"&per_page=80&query="+query;
wallpaperModelList.clear();
fetchWallpaper();
}
String query = editText.getText().toString().toLowerCase();
// url = "https://api.pexels.com/v1/search/?page="+pageNumber+"&per_page=80&query="+query;
wallpaperModelList.clear();
StringRequest request = new StringRequest(Request.Method.GET, "https://api.pexels.com/v1/search/?page="+pageNumber+"&per_page=80&query="+query,
// StringRequest request = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@SuppressLint("NotifyDataSetChanged")
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("photos");
int length = jsonArray.length();
for (int i =0; i<length;i++){
JSONObject object = jsonArray.getJSONObject(i);
int id = object.getInt("id");
JSONObject objectImages = object.getJSONObject("src");
String originalUrl = objectImages.getString("original");
String mediumUrl = objectImages.getString("medium");
WallpaperModel wallpaperModel = new WallpaperModel(id,originalUrl,mediumUrl);
wallpaperModelList.add(wallpaperModel);
}
wallpaperAdapter.notifyDataSetChanged();
pageNumber++;
}catch (JSONException e){
e.printStackTrace();
Toast.makeText(MainActivity.this, "ERROR"+ e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
// params.put("Authorization","563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57");
params.put("Authorization","563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57");
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(request);
});
alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
alert.setNegativeButton("No", (dialog, which) -> {
});
alert.show();
}
return super.onOptionsItemSelected(item);
}
}*/
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public WallpaperAdapter(Context context, List<WallpaperModel> wallpaperModelList
@NonNull
@Override
public WallpaperViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.image_iten,parent,false);
View view = LayoutInflater.from(context).inflate(R.layout.image_item,parent,false);
return new WallpaperViewHolder(view);
}

Expand Down
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/baseline_arrow_back_24.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#FFFFFF" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/baseline_download_24.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M5,20h14v-2H5V20zM19,9h-4V3H9v6H5l7,7L19,9z"/>
</vector>
Loading

0 comments on commit 4c45a5b

Please sign in to comment.