Skip to content

Commit

Permalink
FIrst commit
Browse files Browse the repository at this point in the history
  • Loading branch information
YudizKhushbu committed Jul 20, 2018
0 parents commit 6ad6459
Show file tree
Hide file tree
Showing 84 changed files with 2,508 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
35 changes: 35 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.yudizsolutionspvtltd.materialapp"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
implementation 'com.google.android.material:material:1.0.0-beta01'
implementation 'com.intuit.sdp:sdp-android:1.0.5'
implementation 'com.android.volley:volley:1.1.0'
implementation 'com.google.code.gson:gson:2.8.2'
}
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
30 changes: 30 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yudizsolutionspvtltd.materialapp">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:name=".MaterialApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".bottomAppBar.BottomAppbarBehaviourActivity"></activity>
<activity android:name=".BottomAppBarActivity">

</activity>
<activity android:name=".login.LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".backdrop.BackDropActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.example.yudizsolutionspvtltd.materialapp

import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.yudizsolutionspvtltd.materialapp.bottomAppBar.BottomNavigationDrawerFragment
import kotlinx.android.synthetic.main.activity_bottom_appbar.*

class BottomAppBarActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_bottom_appbar)
setSupportActionBar(bar)
bar.setNavigationOnClickListener {
println("bottomNavDrawerFragment called")

val bottomNavDrawerFragment = BottomNavigationDrawerFragment()
bottomNavDrawerFragment.show(supportFragmentManager, bottomNavDrawerFragment.tag)

}
// bar.setNavigationItemSelectedListener { menuItem ->
// // Bottom Navigation Drawer menu item clicks
// when (menuItem!!.itemId) {
// R.id.nav1 -> context!!.toast(getString(R.string.nav1_clicked))
// R.id.nav2 -> context!!.toast(getString(R.string.nav2_clicked))
// R.id.nav3 -> context!!.toast(getString(R.string.nav3_clicked))
// }
// true
// }

}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.menu, menu)
return true
}

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item!!.itemId) {
R.id.app_bar_fav -> Toast.makeText(this, "Fav menu item is clicked!", Toast.LENGTH_LONG).show()
R.id.app_bar_search -> Toast.makeText(this, "Search menu item is clicked!", Toast.LENGTH_LONG).show()
R.id.app_bar_settings -> Toast.makeText(this, "Settings item is clicked!", Toast.LENGTH_LONG).show()

}

return true
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.example.yudizsolutionspvtltd.materialapp

import android.app.Application
import android.content.Context
import androidx.appcompat.app.AppCompatDelegate

class MaterialApplication : Application() {
companion object {
lateinit var instance: MaterialApplication
private set
}

override fun onCreate() {
super.onCreate()
instance = this

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.example.yudizsolutionspvtltd.materialapp.backdrop

import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.animation.AccelerateDecelerateInterpolator
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
import com.example.yudizsolutionspvtltd.materialapp.R
import com.example.yudizsolutionspvtltd.materialapp.bottomAppBar.ProductCardRecyclerViewAdapter
import com.example.yudizsolutionspvtltd.materialapp.bottomAppBar.TravelEntry
import com.example.yudizsolutionspvtltd.materialapp.bottomAppBar.TravelGridItemDecoration
import kotlinx.android.synthetic.main.activity_back_drop.*

class BackDropActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_back_drop)
this.setSupportActionBar(app_bar)
app_bar.setNavigationOnClickListener(NavigationIconClickListener(
this,
recycler_view,
AccelerateDecelerateInterpolator(),
ContextCompat.getDrawable(this, R.drawable.branded_menu),
ContextCompat.getDrawable(this, R.drawable.close_menu)))

recycler_view.layoutManager = GridLayoutManager(this, 2, GridLayoutManager.VERTICAL, false)
val adapter = ProductCardRecyclerViewAdapter(
TravelEntry.initProductEntryList(resources))
recycler_view.adapter = adapter
val largePadding = resources.getDimensionPixelSize(R.dimen._16sdp)
val smallPadding = resources.getDimensionPixelSize(R.dimen._4sdp)
recycler_view.addItemDecoration(TravelGridItemDecoration(largePadding, smallPadding))
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.toolbar_menu, menu)
return true
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.example.yudizsolutionspvtltd.materialapp.backdrop

import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.app.Activity
import android.content.Context
import android.graphics.drawable.Drawable
import android.util.DisplayMetrics
import android.view.View
import android.view.animation.Interpolator
import android.widget.ImageView
import com.example.yudizsolutionspvtltd.materialapp.R

class NavigationIconClickListener @JvmOverloads internal constructor(
private val context: Context, private val sheet: View, private val interpolator: Interpolator? = null,
private val openIcon: Drawable? = null, private val closeIcon: Drawable? = null) : View.OnClickListener {

private val animatorSet = AnimatorSet()
private val height: Int
private var backdropShown = false

init {
val displayMetrics = DisplayMetrics()
(context as Activity).windowManager.defaultDisplay.getMetrics(displayMetrics)
height = displayMetrics.heightPixels
}

override fun onClick(view: View) {
backdropShown = !backdropShown
animatorSet.removeAllListeners()
animatorSet.end()
animatorSet.cancel()

updateIcon(view)
val translateY = height - context.resources.getDimensionPixelSize(R.dimen._140sdp)
val animator = ObjectAnimator.ofFloat(sheet, "translationY", (if (backdropShown) translateY else 0).toFloat())
animator.duration = 500
if (interpolator != null) {
animator.interpolator = interpolator
}
animatorSet.play(animator)
animator.start()
}

private fun updateIcon(view: View) {
if (openIcon != null && closeIcon != null) {
if (view !is ImageView) {
throw IllegalArgumentException("updateIcon() must be called on an ImageView")
}
if (backdropShown) {
view.setImageDrawable(closeIcon)
} else {
view.setImageDrawable(openIcon)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.example.yudizsolutionspvtltd.materialapp.backdrop

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.toolbox.NetworkImageView
import com.example.yudizsolutionspvtltd.materialapp.R
import com.example.yudizsolutionspvtltd.materialapp.bottomAppBar.ImageReq
import com.example.yudizsolutionspvtltd.materialapp.bottomAppBar.TravelEntry

class StaggeredProductCardRecyclerViewAdapter(private val productList: List<TravelEntry>?) : RecyclerView.Adapter<StaggeredProductCardViewHolder>() {

override fun getItemViewType(position: Int): Int {
return position % 3
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StaggeredProductCardViewHolder {
var layoutId = R.layout.shr_staggered_product_card_first
if (viewType == 1) {
layoutId = R.layout.shr_staggered_product_card_second
} else if (viewType == 2) {
layoutId = R.layout.shr_staggered_product_card_third
}
val layoutView = LayoutInflater.from(parent.context).inflate(layoutId, parent, false)
return StaggeredProductCardViewHolder(layoutView)
}

override fun onBindViewHolder(holder: StaggeredProductCardViewHolder, position: Int) {
if (productList != null && position < productList.size) {
val product = productList[position]
holder.productTitle.text = product.title
holder.productPrice.text = product.price
ImageReq.setImageFromUrl(holder.productImage, product.url)
}
}

override fun getItemCount(): Int {
return productList?.size ?: 0
}
}

class StaggeredProductCardViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

var productImage: NetworkImageView = itemView.findViewById(R.id.product_image)
var productTitle: TextView = itemView.findViewById(R.id.product_title)
var productPrice: TextView = itemView.findViewById(R.id.product_price)
}

Loading

0 comments on commit 6ad6459

Please sign in to comment.