Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

edit profile #42

Open
wants to merge 4 commits into
base: Like-incorrect-photo-bug-fix
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 211 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
<img class='header-img' src='https://s3.amazonaws.com/codingwithmitch-static-and-media/media/instagram-clone/images/Instagram.png' />

<h1>Android Instagram Clone Course</h1>
<h4>A step-by-step guide to build your own Instagram Clone</h4>
<h4>Watch it here: <a href='https://codingwithmitch.com/courses/instagram-clone/' target='_blank'>Instagram Clone Course</a></h4>
<hr>

<p>
In the course we'll be using:
<ul>
<li>Firebase Email Authentication</li>
<li>Firebase Database</li>
<li>Firebase Cloud-Storage</li>
</ul>
<p/>

<p>To keep things simple and condensed I'll be using Firebase for everything.</p>

<h2>Lecture Source Code:</h2>
<ol>
<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/2cac213283ceafe3b1c627096065bd11f80d4161'> Getting Started</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/0f0377337204105604e23f08d3939b5be1556684'> Toolbars and NavigationView</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/69743899065c2b921f99dde9a2aabb5c8f8adc70'> Customizing the BottomNavigationView</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/b42ec4471f1a63c8d6463783b23ca558c12381c4'> BottomNavigationView Activities</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/1cbeb887a4e8cab0e319b50d3506cf2977813723'> Organizing Things and Tab-Prep</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/37a7d8091e96bc0316a7f456b4451fb279d797b5'> SectionsPagerAdapter (Home Screen Tabs)</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/82996f0a25b98340d4b249eafc904495ea3989ee'> Profile Toolbar and Menu</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/766ec53ac97cef3d4edccec18819bea2a5825be0'> Building the Profile Part 1</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/75567884e79c207bd7ddaf9695cfe6b5cfa0f85f'> Building the Profile Part 2</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/194fbc7e36d15f4ac7656b90d7a3c982ef703a01'> Account Settings Layout</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/07da29439db27d2bb1a725567ce7805d1601564a'> Account Settings Navigation</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/b5b71da913bdd831c341dc825ab5cf9844559b1b'> Account Settings Fragments</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/b29cf20ac12e0d9cda259e3bf0e360ad82544f44'> EditProfile Fragment Layout</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/06fbce53308bebfdc215a0d997499cf405443b1b'> Universal Image Loader Config</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/9391edbd31e47ff72773fa2bfe710b086a0046e4'> Testing Images in the User Profile</a></li>

<li><a href='https://github.com/mitchtabian/Android-Instagram-Clone/tree/df348142edcd5e8f76171ad00e5f317f98d19bd5'> Square ImageView Widgets</a></li>

<li><a href='https://goo.gl/Kf8UN8'> Login Layout</a></li>

<li><a href='https://goo.gl/rCfjWv'> Register Layout</a></li>

<li>Get Started with Firebase</li>

<li><a href='https://goo.gl/zTsY17'> Setup Firebase Authentication</a></li>

<li><a href='https://goo.gl/9NmTGC'> Testing Firebase Authentication</a></li>

<li><a href='https://goo.gl/dgWBAF'> Setup Register Activity Widgets</a></li>

<li><a href='https://goo.gl/1Ewh7z'> Register New User with Firebase</a></li>

<li>Firebase Database Structure (no source code) </li>

<li><a href='https://goo.gl/AiqA4A'> Check if Username Already Exists</a></li>

<li><a href='https://goo.gl/8D6cSx'> Insert New Data</a></li>

<li><a href='https://goo.gl/y9SJqE'> Email Verificaiton</a></li>

<li><a href='https://goo.gl/ieYAVE'> Enable User Signout</a></li>

<li><a href='https://goo.gl/ReuZZU'> Profile Fragment</a></li>

<li><a href='https://goo.gl/LQViwp'> Profile Fragment Setup</a></li>

<li><a href='https://goo.gl/dcdw5J'> Retrieving User Data from Firebase</a></li>

<li><a href='https://goo.gl/hzg86h'> Setting Profile Fragment Widgets</a></li>

<li><a href='https://goo.gl/ibo3Hh'> Navigating to EditProfile Fragment</a></li>

<li><a href='https://goo.gl/Yupdcy'> Setting EditProfile Fragment Widgets</a></li>

<li><a href='https://goo.gl/gLgHYX'> Saving User Profile Changes</a></li>

<li><a href='https://goo.gl/8LgdWM'> Query Firebase Database</a></li>

<li><a href='https://goo.gl/mDeYzA'> Changing Firebase Authenticated Email (part 1)</a></li>

<li><a href='https://goo.gl/uccU2R'> Changing Firebase Authenticated Email (part 2)</a></li>

<li><a href='https://goo.gl/TWtdtr'> Changing Firebase Authenticated Email (part 3)</a></li>

<li><a href='https://goo.gl/j7vXME'> Update User Account Settings</a></li>

<li><a href='https://goo.gl/AqhtLL'> Verifying Permissions for Sharing</a></li>

<li><a href='https://goo.gl/ifPz9N'> ShareActivity Layout and Tabs</a></li>

<li><a href='https://goo.gl/C3ft9K'> Setup Gallery and Photo Fragments</a></li>

<li><a href='https://goo.gl/29ufSk'> Camera Intent</a></li>

<li><a href='https://goo.gl/FKqjXX'> GalleryFragment Layout</a></li>

<li><a href='https://goo.gl/9MZRWd'> Phone Directories</a></li>

<li><a href='https://goo.gl/CJaUGM'> ShareActivity GridView</a></li>

<li><a href='https://goo.gl/RgpgN2'> Selected Image to Share</a></li>

<li><a href='https://goo.gl/oRKmRj'> NextActivity Setup</a></li>

<li>How to upload images to Firebase Storage (no source code)</li>

<li><a href='https://goo.gl/mGZgB5'> Getting the Image Count</a></li>

<li><a href='https://goo.gl/6t157B'> Firebase Storage Reference</a></li>

<li><a href='https://goo.gl/YTU5ND'> Convert Bitmap to Byte Array</a></li>

<li><a href='https://goo.gl/epw8Xa'> Upload Photo to Firebase Storage</a></li>

<li><a href='https://goo.gl/f2RxFS'> Insert Photo into Firebase Database</a></li>

<li><a href='https://goo.gl/BEZLor'> Changing Profile Photo</a></li>

<li><a href='https://goo.gl/iq2ZTH'> Upload New Profile Photo to Firebase Storage</a></li>

<li><a href='https://goo.gl/1tNrCV'> Fixing the Navigation</a></li>

<li><a href='https://goo.gl/PrZP7r'> New Profile Photo Using Camera</a></li>

<li><a href='https://goo.gl/yTZtnM'> Share Photo using Camera</a></li>

<li><a href='https://goo.gl/bZc1qN'> Populating User Profile Gridview</a></li>

<li><a href='https://goo.gl/4swnKB'> Activity Animations</a></li>

<li><a href='https://goo.gl/3byc52'> Post Viewing Layout (part1)</a></li>

<li><a href='https://goo.gl/a2HPfb'> Post Viewing Layout (part2)</a></li>

<li><a href='https://goo.gl/3bJ78v'> GridImage Selection Interface</a></li>

<li><a href='https://goo.gl/MTJN4g'> Retrieving Post Image From Bundle</a></li>

<li><a href='https://goo.gl/6rdyox'> Image Post Date</a></li>

<li><a href='https://goo.gl/xF1RKF'> Query Photo Details</a></li>

<li><a href='https://goo.gl/cCbDuq'> Likes Toggle Part1</a></li>

<li><a href='https://goo.gl/GRgVyQ'> Likes Toggle Part2</a></li>

<li><a href='https://goo.gl/Fn39Cr'> Likes Toggle Part3</a></li>

<li><a href='https://goo.gl/5kaxZ2'> Likes Toggle Part4</a></li>

<li><a href='https://goo.gl/T8UUE6'> Likes Toggle Part5</a></li>

<li><a href='https://goo.gl/bzTqMP'> Testing Instagram Likes</a></li>

<li><a href='https://goo.gl/z1Ve71'> Comments Layout</a></li>

<li><a href='https://goo.gl/9QkStK'> Comments ListAdapter part1</a></li>

<li><a href='https://goo.gl/A1fRbt'> Comments ListAdapter part2</a></li>

<li><a href='https://goo.gl/PDWjup'> Displaying the First Comment</a></li>

<li><a href='https://goo.gl/NrYk1L'> Inserting Comments</a></li>

<li><a href='https://goo.gl/NXoATT'> Reading Comments</a></li>

<li><a href='https://goo.gl/3WL56A'> Finishing Comments (IMPORTANT)</a></li>

<li><a href='https://goo.gl/nHN42P'> Search Activity Layout</a></li>

<li><a href='https://goo.gl/CC1WvX'> Searching for Users</a></li>

<li><a href='https://goo.gl/fFPB8M'> Viewing User Profiles</a></li>

<li><a href='https://goo.gl/Wu6P9m'> View Profile Fragment</a></li>

<li><a href='https://goo.gl/JfMbJW'> Following Users (part1)</a></li>

<li><a href='https://goo.gl/4LF6aC'> Following Users (part2)</a></li>

<li><a href='https://goo.gl/zhTqSF'> Fixing a Few Bugs</a></li>

<li><a href='https://goo.gl/j8TFtk'> Mainfeed ListAdapter (part 1/2)</a></li>

<li><a href='https://goo.gl/ejjmZu'> Mainfeed ListAdapter (part 2/2)</a></li>

<li><a href='https://goo.gl/f2cBVJ'> Displaying Posts in the Main Feed (part 1/3)</a></li>

<li><a href='https://goo.gl/9SYKS2'> Displaying Posts in the Main Feed (part 2/3)</a></li>

<li><a href='https://goo.gl/82m8Yc'> Displaying Posts in the Main Feed (part 3/3)</a></li>

<li><a href='https://goo.gl/E6hqLT'> ListView Pagination and Bug Fixes </a></li>

<li>End?!</li>
</ol>

38 changes: 24 additions & 14 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
compileSdkVersion 27
defaultConfig {
applicationId "tabian.com.instagramclone2"
minSdkVersion 18

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure having minSdkVersion 21?
As I know you cannot use lambdas or other cool features using minSdkVerison 18

targetSdkVersion 25
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Expand All @@ -20,35 +19,46 @@ android {
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'

//Design library for Coordinator Layout and Toolbars
compile 'com.android.support:design:25.3.1'

compile 'com.android.support:design:27.0.2'
//ExifInterface support
compile 'com.android.support:exifinterface:27.0.2'
//design library for Coordinator Layout
compile 'com.android.support:design:27.0.2'
//Exo Player
compile 'com.google.android.exoplayer:exoplayer:2.6.0'
//cardview
compile 'com.android.support:cardview-v7:27.0.2'
//recyclerview
compile 'com.android.support:recyclerview-v7:27.0.2'
//BottomNavigationViewEx library
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.9'

//Circle ImageView
compile 'de.hdodenhof:circleimageview:2.1.0'

//elastic header
compile 'com.github.eschao:android-ElasticListView:v1.0'
//material dialogs
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
//glide
implementation 'com.github.bumptech.glide:glide:4.4.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
implementation files('libs/aspectjrt-1.7.3 (1).jar')
//Universal image loader
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

//firebase authentication
compile 'com.google.firebase:firebase-auth:10.2.6'

//firebase database
compile 'com.google.firebase:firebase-database:10.2.6'

//firebase storage
compile 'com.google.firebase:firebase-storage:10.2.6'

compile files('libs/aspectjrt-1.7.3 (1).jar')
}

//Firebase
Expand Down
Binary file added app/libs/aspectjrt-1.7.3 (1).jar
Binary file not shown.
Binary file added app/libs/isoparser-1.0.6.jar
Binary file not shown.
49 changes: 39 additions & 10 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application
android:allowBackup="true"
Expand All @@ -14,23 +20,46 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="tabian.com.instagramclone2.Home.HomeActivity">
<activity
android:name=".Home.HomeActivity"
android:screenOrientation="portrait"
android:launchMode="singleInstance">

</activity>
<activity android:name=".Likes.LikesActivity"
android:launchMode="singleInstance"/>
<activity android:name=".Profile.ProfileActivity"
android:launchMode="singleInstance"/>
<activity android:name=".Share.ShareActivity"
android:launchMode="singleInstance"/>
<activity android:name=".Share.NextActivity"
android:launchMode="singleInstance"/>
<activity android:name=".Login.LoginActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="tabian.com.instagramclone2.Likes.LikesActivity"></activity>
<activity android:name="tabian.com.instagramclone2.Profile.ProfileActivity"></activity>
<activity android:name="tabian.com.instagramclone2.Search.SearchActivity"
android:windowSoftInputMode="adjustNothing">
<activity android:name=".Profile.AccountSettingsActivity"
android:launchMode="singleInstance"/>
<activity android:name=".Login.RegisterActivity"
android:launchMode="singleInstance"/>
<activity android:name=".opengl.OpenGLES10Activity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity android:name=".opengl.NewStoryActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"/>
<activity
android:name=".Search.SearchActivity"
android:windowSoftInputMode="adjustNothing"
android:launchMode="singleInstance">

</activity>
<activity android:name="tabian.com.instagramclone2.Share.ShareActivity"></activity>
<activity android:name="tabian.com.instagramclone2.Profile.AccountSettingsActivity"></activity>
<activity android:name="tabian.com.instagramclone2.Login.RegisterActivity"></activity>
<activity android:name="tabian.com.instagramclone2.Login.LoginActivity"></activity>
<activity android:name=".Share.NextActivity"/>
<activity android:name=".materialcamera.CaptureActivity" android:screenOrientation="portrait"/>
<activity android:name=".materialcamera.CaptureActivity2" android:screenOrientation="portrait"/>
</application>

</manifest>
Loading