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

Update project #6

Open
wants to merge 2 commits into
base: master
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ allprojects {
Add the dependency:
```Groovy
dependencies {
compile 'com.github.Yalantis:ColorMatchTabsAndroid:v0.0.1'
implementation 'com.github.Yalantis:ColorMatchTabsAndroid:v0.0.2'
}
```

Expand Down
34 changes: 19 additions & 15 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
compileSdkVersion 33
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.yalantis.colormatchtabs.colortabs"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
targetSdkVersion 33
versionCode 2
versionName "1.0.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand All @@ -19,24 +18,29 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

buildFeatures {
viewBinding true
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('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.constraint:constraint-layout:1.0.2'
compile 'com.android.support:design:25.3.1'
testCompile 'junit:junit:4.12'
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

implementation "androidx.appcompat:appcompat:1.5.1"
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation "com.google.android.material:material:1.6.1"

testImplementation "junit:junit:4.13.2"

//UploadImages
compile 'com.facebook.fresco:fresco:1.1.0'
compile project(path: ':library')
implementation "com.facebook.fresco:fresco:2.6.0"
implementation project(path: ':library')
}
repositories {
mavenCentral()
google()
}
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.yalantis.colormatchtabs.colortabs

import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentStatePagerAdapter
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter

/**
* Created by anna on 10.05.17.
*/
class ColorTabsAdapter(fragmentManager: FragmentManager, amountTabs: Int) : FragmentStatePagerAdapter(fragmentManager) {
class ColorTabsAdapter(fragmentManager: FragmentManager, amountTabs: Int) :
FragmentStatePagerAdapter(fragmentManager) {

private val amountTabs = amountTabs

Expand Down
Original file line number Diff line number Diff line change
@@ -1,38 +1,39 @@
package com.yalantis.colormatchtabs.colortabs

import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.LinearLayout
import androidx.recyclerview.widget.RecyclerView
import com.yalantis.colormatchtabs.colortabs.databinding.ItemBinding
import com.yalantis.colormatchtabs.colortabs.model.Menu
import kotlinx.android.synthetic.main.item.view.*

/**
* Created by anna on 29.05.17.
*/
class ListItemAdapter() : RecyclerView.Adapter<ListItemAdapter.MusicHolder>() {
class ListItemAdapter : RecyclerView.Adapter<ListItemAdapter.MusicHolder>() {

private lateinit var binding: ItemBinding
var items: List<Menu> = listOf()
set(value) {
field = value
notifyDataSetChanged()
}

override fun onBindViewHolder(holder: MusicHolder?, position: Int) {
override fun onBindViewHolder(holder: MusicHolder, position: Int) {
val menu = items[position]
holder?.layout?.apply {
picture.setImageURI(menu.picture)
nameOfDish.text = menu.dishName
restaurantName.text = menu.cafeName
review.text = menu.reviewAmount
holder.layout.apply {
binding.picture.setImageURI(menu.picture)
binding.nameOfDish.text = menu.dishName
binding.restaurantName.text = menu.cafeName
binding.review.text = menu.reviewAmount
}
}

override fun getItemCount(): Int = items.count()

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MusicHolder {
val layout = LayoutInflater.from(parent?.context).inflate(R.layout.item, parent, false) as LinearLayout
return MusicHolder(layout)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MusicHolder {
binding = ItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return MusicHolder(binding.root)
}

class MusicHolder(val layout: LinearLayout) : RecyclerView.ViewHolder(layout)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,47 +1,48 @@
package com.yalantis.colormatchtabs.colortabs

import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v7.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.yalantis.colormatchtabs.colortabs.databinding.FragmentListItemsBinding
import com.yalantis.colormatchtabs.colortabs.model.Menu
import kotlinx.android.synthetic.main.fragment_list_items.*

/**
* Created by anna on 09.05.17.
*/
class ListItemsFragment : Fragment() {

companion object {
private const val BASE_SCHEME = "res:///"
fun newInstance() = ListItemsFragment()
}
private lateinit var binding: FragmentListItemsBinding

private val listOfPictures by lazy { listOf(BASE_SCHEME + R.drawable.eat, BASE_SCHEME + R.drawable.coffe) }
private val listOfDishName by lazy { listOf(context.getString(R.string.caesar), context.getString(R.string.latte)) }
private val listOfRestaurant by lazy { listOf(context.getString(R.string.cafe), context.getString(R.string.stareducks)) }
private val listOfDishName by lazy { listOf(requireContext().getString(R.string.caesar), requireContext().getString(R.string.latte)) }
private val listOfRestaurant by lazy { listOf(requireContext().getString(R.string.cafe), requireContext().getString(R.string.stareducks)) }

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
return inflater?.inflate(R.layout.fragment_list_items, container, false)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = FragmentListItemsBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
menuList.layoutManager = LinearLayoutManager(context)
menuList.adapter = ListItemAdapter()
(menuList.adapter as ListItemAdapter).items = createListItems()
binding.menuList.layoutManager = LinearLayoutManager(context)
binding.menuList.adapter = ListItemAdapter()
(binding.menuList.adapter as ListItemAdapter).items = createListItems()
}

private fun createListItems(): List<Menu> {
val list = mutableListOf<Menu>()
for (i in 0..5) {
val index = i.rem(2)
list.add(Menu(listOfPictures[index], listOfDishName[index], listOfRestaurant[index], context.getString(R.string.caesar_review)))
list.add(Menu(listOfPictures[index], listOfDishName[index], listOfRestaurant[index], requireContext().getString(R.string.caesar_review)))
}
return list
}

companion object {
private const val BASE_SCHEME = "res:///"
fun newInstance() = ListItemsFragment()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,32 @@ package com.yalantis.colormatchtabs.colortabs

import android.graphics.Color
import android.os.Bundle
import android.support.v4.content.ContextCompat
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.Menu
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.facebook.drawee.backends.pipeline.Fresco
import com.yalantis.colormatchtabs.colormatchtabs.menu.MenuToggleListener
import com.yalantis.colormatchtabs.colormatchtabs.adapter.ColorTabAdapter
import com.yalantis.colormatchtabs.colormatchtabs.listeners.ColorTabLayoutOnPageChangeListener
import com.yalantis.colormatchtabs.colormatchtabs.listeners.OnArcMenuListener
import com.yalantis.colormatchtabs.colormatchtabs.listeners.OnColorTabSelectedListener
import com.yalantis.colormatchtabs.colormatchtabs.model.ColorTab
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main.view.*
import com.yalantis.colormatchtabs.colortabs.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

private val binding: ActivityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Fresco.initialize(this)
setContentView(R.layout.activity_main)
toolbar.toolbarTitle.setTextColor(ContextCompat.getColor(this, R.color.colorGreen))
toolbar.setNavigationIcon(R.drawable.ic_menu)
setSupportActionBar(toolbar)
setContentView(binding.root)

binding.toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.colorGreen))
binding.toolbar.setNavigationIcon(R.drawable.ic_menu)
setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayShowTitleEnabled(false)

val colorsArray = resources.getStringArray(R.array.colors)
Expand All @@ -36,38 +38,62 @@ class MainActivity : AppCompatActivity() {
val tabName = textsArray[index]
val selectedColor = Color.parseColor(color)
val icon = iconsArray.getDrawable(index)
colorMatchTabLayout.addTab(ColorTabAdapter.createColorTab(colorMatchTabLayout, tabName, selectedColor, icon))
binding.colorMatchTabLayout.addTab(
ColorTabAdapter.createColorTab(
binding.colorMatchTabLayout,
tabName,
selectedColor,
icon!!
)
)
}

with(binding.viewPager) {
adapter = ColorTabsAdapter(supportFragmentManager, binding.colorMatchTabLayout.count())
addOnPageChangeListener(ColorTabLayoutOnPageChangeListener(binding.colorMatchTabLayout))
setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.colorGreen))
background.alpha = 128
}

viewPager.adapter = ColorTabsAdapter(supportFragmentManager, colorMatchTabLayout.count())
viewPager.addOnPageChangeListener(ColorTabLayoutOnPageChangeListener(colorMatchTabLayout))
viewPager.setBackgroundColor(ContextCompat.getColor(this, R.color.colorGreen))
viewPager.background.alpha = 128
colorMatchTabLayout.addArcMenu(arcMenu)
colorMatchTabLayout.addOnColorTabSelectedListener(object : OnColorTabSelectedListener {
binding.colorMatchTabLayout.addArcMenu(binding.arcMenu)
binding.colorMatchTabLayout.addOnColorTabSelectedListener(object : OnColorTabSelectedListener {
override fun onSelectedTab(tab: ColorTab?) {
viewPager.currentItem = tab?.position ?: 0
viewPager.setBackgroundColor(tab?.selectedColor ?: ContextCompat.getColor(this@MainActivity, R.color.colorPrimary))
viewPager.background.alpha = 128
toolbar.toolbarTitle.setTextColor(tab?.selectedColor ?: ContextCompat.getColor(this@MainActivity, R.color.colorPrimary))
binding.viewPager.currentItem = tab?.position ?: 0
binding.viewPager.setBackgroundColor(
tab?.selectedColor ?: ContextCompat.getColor(
this@MainActivity,
R.color.colorPrimary
)
)
binding.viewPager.background.alpha = 128
binding.toolbar.setTitleTextColor(
tab?.selectedColor ?: ContextCompat.getColor(
this@MainActivity,
R.color.colorPrimary
)
)
}

override fun onUnselectedTab(tab: ColorTab?) {
Log.e("Unselected ", "tab")
}
})
arcMenu.addMenuToggleListener(object : MenuToggleListener {
binding.arcMenu.addMenuToggleListener(object : MenuToggleListener {
override fun onOpenMenu() {
viewUnderMenu.animateView(true)
binding.viewUnderMenu.animateView(true)
}

override fun onCloseMenu() {
viewUnderMenu.animateView(false)
binding.viewUnderMenu.animateView(false)
}
})
arcMenu.addOnClickListener(object : OnArcMenuListener {
binding.arcMenu.addOnClickListener(object : OnArcMenuListener {
override fun onClick(position: Int) {
Toast.makeText(this@MainActivity, "Tab " + position.toString() + " is clicked", Toast.LENGTH_LONG).show()
Toast.makeText(
this@MainActivity,
"Tab " + position.toString() + " is clicked",
Toast.LENGTH_LONG
).show()
}
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import android.animation.ValueAnimator
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.support.v4.content.ContextCompat
import android.support.v4.view.animation.PathInterpolatorCompat
import android.util.AttributeSet
import android.view.View
import android.widget.LinearLayout
import androidx.core.content.ContextCompat
import androidx.core.view.animation.PathInterpolatorCompat
import com.yalantis.colormatchtabs.colortabs.R

/**
Expand All @@ -30,9 +30,9 @@ class MenuView : LinearLayout {
private val backgroundPaint: Paint = Paint()
private var isMenuOpen = false

constructor(context: Context?) : this(context, null)
constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
setWillNotDraw(false)
backgroundPaint.flags = Paint.ANTI_ALIAS_FLAG
backgroundPaint.color = ContextCompat.getColor(context, R.color.colorWhite)
Expand Down Expand Up @@ -62,7 +62,7 @@ class MenuView : LinearLayout {
invalidate()
}
addListener(object : AnimatorListenerAdapter() {
override fun onAnimationStart(animation: Animator?) {
override fun onAnimationStart(animation: Animator) {
super.onAnimationStart(animation)
if (!isMenuOpen) {
getChildAt(0).visibility = View.GONE
Expand All @@ -73,7 +73,7 @@ class MenuView : LinearLayout {
animatePlayButton(isMenuOpen)
}

override fun onAnimationEnd(animation: Animator?) {
override fun onAnimationEnd(animation: Animator) {
super.onAnimationEnd(animation)
if (!isMenuOpen) {
visibility = View.GONE
Expand Down
Loading