Skip to content

Commit 8a36122

Browse files
committed
Instagram CLone App
This App Mimics the tools and certain Functionalities that of Instagram App
1 parent e4b7e65 commit 8a36122

File tree

4 files changed

+509
-0
lines changed

4 files changed

+509
-0
lines changed

Instagram-Clone/MainActivity.java

+169
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
package com.lenovo.instagram_clone;
2+
3+
import android.content.Intent;
4+
import android.support.v7.app.AppCompatActivity;
5+
import android.os.Bundle;
6+
import android.util.Log;
7+
import android.view.KeyEvent;
8+
import android.view.View;
9+
import android.view.inputmethod.InputMethodManager;
10+
import android.widget.Button;
11+
import android.widget.EditText;
12+
import android.widget.ImageView;
13+
import android.widget.RelativeLayout;
14+
import android.widget.TextView;
15+
import android.widget.Toast;
16+
17+
import com.parse.LogInCallback;
18+
import com.parse.Parse;
19+
import com.parse.ParseAnalytics;
20+
import com.parse.ParseException;
21+
import com.parse.ParseUser;
22+
import com.parse.SignUpCallback;
23+
24+
public class MainActivity extends AppCompatActivity implements View.OnClickListener, View.OnKeyListener {
25+
26+
Boolean signUpModeActive = true;
27+
int i;
28+
TextView changeSignupModeTextView;
29+
EditText passwordEditText;
30+
31+
public void showUserList() {
32+
33+
Intent intent = new Intent(getApplicationContext(), UserListActivity.class);
34+
startActivity(intent);
35+
36+
}
37+
@Override
38+
public boolean onKey(View v, int keyCode, KeyEvent event) {
39+
40+
if(i==KeyEvent.KEYCODE_ENTER && event.getAction()==KeyEvent.ACTION_DOWN)
41+
{
42+
Signup(v);
43+
}
44+
return false;
45+
}
46+
@Override
47+
public void onClick(View view) {
48+
49+
if (view.getId() == R.id.changeSignupModeTextView) {
50+
51+
Button signupButton = (Button) findViewById(R.id.signupButton);
52+
53+
if (signUpModeActive) {
54+
55+
signUpModeActive = false;
56+
signupButton.setText("Login");
57+
changeSignupModeTextView.setText("Or, Signup");
58+
59+
} else {
60+
61+
signUpModeActive = true;
62+
signupButton.setText("Signup");
63+
changeSignupModeTextView.setText("Or, Login");
64+
65+
}
66+
67+
}else if(view.getId() ==R.id.backgroundRelativeLayout || view.getId() ==R.id.LogoImageView )
68+
{
69+
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
70+
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),0);
71+
}
72+
73+
}
74+
public void Signup(View view) {
75+
76+
EditText usernameEditText = (EditText) findViewById(R.id.UsernameeditText);
77+
78+
79+
80+
if (usernameEditText.getText().toString().matches("") || passwordEditText.getText().toString().matches("")) {
81+
82+
Toast.makeText(this, "A username and password are required.", Toast.LENGTH_SHORT).show();
83+
84+
} else {
85+
86+
if (signUpModeActive) {
87+
88+
ParseUser user = new ParseUser();
89+
90+
user.setUsername(usernameEditText.getText().toString());
91+
user.setPassword(passwordEditText.getText().toString());
92+
93+
user.signUpInBackground(new SignUpCallback() {
94+
@Override
95+
public void done(ParseException e) {
96+
if (e == null) {
97+
98+
Log.i("Signup", "Successful");
99+
showUserList();
100+
101+
} else {
102+
103+
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
104+
105+
}
106+
}
107+
});
108+
109+
} else {
110+
111+
ParseUser.logInInBackground(usernameEditText.getText().toString(), passwordEditText.getText().toString(), new LogInCallback() {
112+
@Override
113+
public void done(ParseUser user, ParseException e) {
114+
115+
if (user != null) {
116+
117+
Log.i("Signup", "Login successful");
118+
showUserList();
119+
} else {
120+
121+
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
122+
123+
}
124+
125+
126+
}
127+
});
128+
129+
130+
}
131+
}
132+
133+
134+
}
135+
@Override
136+
protected void onCreate(Bundle savedInstanceState) {
137+
super.onCreate(savedInstanceState);
138+
setContentView(R.layout.activity_main);
139+
140+
changeSignupModeTextView = (TextView) findViewById(R.id.changeSignupModeTextView);
141+
changeSignupModeTextView.setOnClickListener(this);
142+
RelativeLayout backgroundRelativeLayout=(RelativeLayout)findViewById(R.id.backgroundRelativeLayout);
143+
ImageView logoImageView =(ImageView)findViewById(R.id.LogoImageView);
144+
backgroundRelativeLayout.setOnClickListener(this);
145+
logoImageView.setOnClickListener(this);
146+
passwordEditText = (EditText) findViewById(R.id.PasswordeditText);
147+
passwordEditText.setOnKeyListener(this);
148+
149+
Parse.enableLocalDatastore(this);
150+
151+
// Add your initialization code here
152+
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
153+
.applicationId("aa84cd91fd1c6e4f42d0e8cb27bd479dc9f13c1d")
154+
.clientKey("0a162ef04c19311d5a900f9ea20b8082b7974274")
155+
.server("http://18.224.23.225:80/parse/")
156+
.build()
157+
);
158+
159+
if (ParseUser.getCurrentUser() != null) {
160+
161+
showUserList();
162+
163+
}
164+
165+
ParseAnalytics.trackAppOpenedInBackground(getIntent());
166+
}
167+
168+
169+
}
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.lenovo.instagram_clone;
2+
3+
/**
4+
* Created by lenovo on 17-Jan-19.
5+
*/
6+
import android.app.Application;
7+
import android.util.Log;
8+
9+
import com.parse.Parse;
10+
import com.parse.ParseACL;
11+
import com.parse.ParseException;
12+
import com.parse.ParseObject;
13+
import com.parse.ParseUser;
14+
import com.parse.SaveCallback;
15+
16+
17+
public class StarterApplication extends Application {
18+
19+
@Override
20+
public void onCreate() {
21+
super.onCreate();
22+
23+
// Enable Local Datastore.
24+
Parse.enableLocalDatastore(this);
25+
26+
// Add your initialization code here
27+
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
28+
.applicationId("aa84cd91fd1c6e4f42d0e8cb27bd479dc9f13c1d")
29+
.clientKey("0a162ef04c19311d5a900f9ea20b8082b7974274")
30+
.server("http://18.224.23.225:80/parse/")
31+
.build()
32+
);
33+
34+
ParseObject object = new ParseObject("ExampleObject");
35+
object.put("myNumber", "123");
36+
object.put("myString", "rob");
37+
38+
object.saveInBackground(new SaveCallback () {
39+
@Override
40+
public void done(ParseException ex) {
41+
if (ex == null) {
42+
Log.i("Parse Result", "Successful!");
43+
} else {
44+
Log.i("Parse Result", "Failed" + ex.toString());
45+
}
46+
}
47+
});
48+
49+
50+
//ParseUser.enableAutomaticUser();
51+
52+
ParseACL defaultACL = new ParseACL();
53+
defaultACL.setPublicReadAccess(true);
54+
defaultACL.setPublicWriteAccess(true);
55+
ParseACL.setDefaultACL(defaultACL, true);
56+
57+
}
58+
}

Instagram-Clone/UserFeedActivity.java

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.lenovo.instagram_clone;
2+
3+
import android.content.Intent;
4+
import android.graphics.Bitmap;
5+
import android.graphics.BitmapFactory;
6+
import android.support.v7.app.AppCompatActivity;
7+
import android.os.Bundle;
8+
import android.view.ViewGroup;
9+
import android.widget.ImageView;
10+
import android.widget.LinearLayout;
11+
12+
import com.parse.FindCallback;
13+
import com.parse.GetDataCallback;
14+
import com.parse.ParseException;
15+
import com.parse.ParseFile;
16+
import com.parse.ParseObject;
17+
import com.parse.ParseQuery;
18+
19+
import java.util.List;
20+
21+
public class UserFeedActivity extends AppCompatActivity {
22+
23+
@Override
24+
protected void onCreate(Bundle savedInstanceState) {
25+
super.onCreate(savedInstanceState);
26+
setContentView(R.layout.activity_user_feed);
27+
28+
final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
29+
30+
Intent intent = getIntent();
31+
32+
String activeUsername = intent.getStringExtra("username");
33+
34+
setTitle(activeUsername + "'s Feed");
35+
36+
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Image");
37+
38+
query.whereEqualTo("username", activeUsername);
39+
query.orderByDescending("createdAt");
40+
41+
query.findInBackground(new FindCallback<ParseObject>() {
42+
@Override
43+
public void done(List<ParseObject> objects, ParseException e) {
44+
45+
if (e == null) {
46+
47+
if (objects.size() > 0) {
48+
49+
for (ParseObject object : objects) {
50+
51+
ParseFile file = (ParseFile) object.get("image");
52+
53+
file.getDataInBackground(new GetDataCallback() {
54+
@Override
55+
public void done(byte[] data, ParseException e) {
56+
57+
if (e == null && data != null) {
58+
59+
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
60+
61+
ImageView imageView = new ImageView(getApplicationContext());
62+
63+
imageView.setLayoutParams(new ViewGroup.LayoutParams(
64+
ViewGroup.LayoutParams.MATCH_PARENT,
65+
ViewGroup.LayoutParams.WRAP_CONTENT
66+
));
67+
68+
imageView.setImageBitmap(bitmap);
69+
70+
linearLayout.addView(imageView);
71+
72+
}
73+
74+
75+
}
76+
});
77+
78+
}
79+
80+
}
81+
82+
}
83+
84+
}
85+
});
86+
87+
}
88+
}

0 commit comments

Comments
 (0)