Skip to content

Commit e4b792b

Browse files
committed
UI
1 parent baa1f77 commit e4b792b

11 files changed

Lines changed: 285 additions & 7 deletions

File tree

app/src/main/kotlin/com/rayfantasy/icode/extension/_Anko.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import android.util.TypedValue
3131
import android.view.View
3232
import android.view.ViewManager
3333
import android.widget.LinearLayout
34+
import com.like.LikeButton
3435
import com.rayfantasy.icode.R
3536
import org.jetbrains.anko.*
3637
import org.jetbrains.anko.appcompat.v7._Toolbar
@@ -161,4 +162,5 @@ fun generateViewId(): Int {
161162
}
162163
}
163164
}
164-
}
165+
}
166+
fun ViewManager.likeButton(init: LikeButton.() -> Unit) = ankoView(::LikeButton, init)

app/src/main/kotlin/com/rayfantasy/icode/kbinding/_ViewGroup.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.rayfantasy.icode.kbinding
1818

1919
import android.app.Activity
2020
import android.app.Fragment
21+
import android.view.View
2122
import android.view.ViewGroup
2223
import com.benny.library.kbinding.bind.oneWayPropertyBinding
2324
import com.benny.library.kbinding.converter.EmptyOneWayConverter1
@@ -31,7 +32,7 @@ fun ViewGroup.fragment(vararg paths: String, converter: OneWayConverter<*, Fragm
3132
private fun fragment(container: ViewGroup) = Action1<Fragment> {
3233
val ctx = container.context
3334
if (ctx is Activity) {
34-
if (container.id == -1)
35+
if (container.id == View.NO_ID)
3536
container.id = generateViewId()
3637
val transaction = ctx.fragmentManager.beginTransaction()
3738
transaction.replace(container.id, it).commit()

app/src/main/kotlin/com/rayfantasy/icode/ui/activity/MainActivity.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ import com.rayfantasy.icode.R
3030
import com.rayfantasy.icode.theme.ThemeModel
3131
import com.rayfantasy.icode.ui.fragment.AboutFragment
3232
import com.rayfantasy.icode.ui.fragment.CodeListFragment
33-
import com.rayfantasy.icode.ui.layout.MainActivityUI
33+
import com.rayfantasy.icode.ui.fragment.FavoriteFragment
34+
import com.rayfantasy.icode.ui.layout.activity.MainActivityUI
3435
import org.jetbrains.anko.configuration
3536
import kotlin.properties.Delegates
3637

@@ -50,6 +51,8 @@ class MainActivity : ActivityBase() {
5051

5152
val codeListFragment by lazy { CodeListFragment() }
5253
val aboutFragment by lazy { AboutFragment() }
54+
val favoriteFragment by lazy { FavoriteFragment() }
55+
5356

5457
@delegate:Property
5558
var fragment by Delegates.property<Fragment>(codeListFragment)
@@ -67,6 +70,7 @@ class MainActivity : ActivityBase() {
6770
when (item.itemId) {
6871
R.id.nav_home -> fragment = codeListFragment
6972
R.id.nav_about -> fragment = aboutFragment
73+
R.id.nav_favo -> fragment = favoriteFragment
7074
}
7175
openedDrawer = Gravity.NO_GRAVITY
7276
}

app/src/main/kotlin/com/rayfantasy/icode/ui/fragment/AboutFragment.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,16 @@ package com.rayfantasy.icode.ui.fragment
1919
import android.os.Bundle
2020
import android.view.LayoutInflater
2121
import android.view.ViewGroup
22+
import com.rayfantasy.icode.ui.layout.fragment.AboutFragmentUI
2223
import org.jetbrains.anko.UI
2324
import org.jetbrains.anko.frameLayout
2425
import org.jetbrains.anko.textView
2526

2627
class AboutFragment : FragmentBase() {
28+
29+
2730
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?) = UI {
28-
frameLayout {
29-
textView("AboutFragment")
30-
}
31+
AboutFragmentUI().createView(this)
3132
}.view
3233

3334
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.rayfantasy.icode.ui.fragment
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import com.rayfantasy.icode.ui.layout.fragment.FavoriteFragmentUI
8+
import org.jetbrains.anko.UI
9+
10+
/**
11+
* Created by Allen on 2016/4/3.
12+
*/
13+
class FavoriteFragment : FragmentBase(){
14+
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?) = UI {
15+
FavoriteFragmentUI().createView(this)
16+
}.view
17+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.rayfantasy.icode.ui.layout.activity
2+
3+
import com.benny.library.kbinding.view.ViewBinderComponent
4+
import com.rayfantasy.icode.R
5+
import com.rayfantasy.icode.extension.appBarLayout
6+
import com.rayfantasy.icode.extension.collapseModePin
7+
import com.rayfantasy.icode.extension.generateViewId
8+
import com.rayfantasy.icode.extension.lparams
9+
import com.rayfantasy.icode.theme.colorPrimary
10+
import com.rayfantasy.icode.theme.colorPrimaryDark
11+
import com.rayfantasy.icode.theme.observe
12+
import org.jetbrains.anko.*
13+
import org.jetbrains.anko.appcompat.v7.toolbar
14+
import org.jetbrains.anko.design.appBarLayout
15+
import org.jetbrains.anko.design.collapsingToolbarLayout
16+
import org.jetbrains.anko.design.coordinatorLayout
17+
18+
/**
19+
* Created by Allen on 2016/4/3.
20+
*/
21+
class LoginActivityUI : ViewBinderComponent<LoginActivityUI> {
22+
companion object{
23+
val ID_USERNAME = generateViewId()
24+
val ID_PWD = generateViewId()
25+
val ID_LOGIN = generateViewId()
26+
val ID_SIGINUP = generateViewId()
27+
}
28+
override fun builder(): AnkoContext<*>.() -> Unit = {
29+
coordinatorLayout {
30+
appBarLayout(R.style.AppTheme_AppBarOverlay){
31+
observe(colorPrimary){backgroundColor}
32+
collapsingToolbarLayout{
33+
observe(colorPrimary){ setContentScrimColor(it) }
34+
observe(colorPrimaryDark){ setStatusBarScrimResource(it) }
35+
toolbar {
36+
popupTheme = R.style.AppTheme_PopupOverlay
37+
collapseModePin()
38+
}.lparams(matchParent,R.attr.actionBarSize)
39+
fitsSystemWindows = true
40+
}.lparams(matchParent,matchParent){ }
41+
fitsSystemWindows = true
42+
}.lparams(matchParent,R.dimen.app_bar_height){ }
43+
44+
45+
//原来的include
46+
verticalLayout {
47+
setPadding(R.dimen.activity_horizontal_margin,R.dimen.activity_vertical_margin,R.dimen.activity_horizontal_margin,R.dimen.activity_vertical_margin)
48+
}.lparams(matchParent,matchParent)
49+
}.lparams(matchParent,matchParent)
50+
}
51+
}

app/src/main/kotlin/com/rayfantasy/icode/ui/layout/MainActivityUI.kt renamed to app/src/main/kotlin/com/rayfantasy/icode/ui/layout/activity/MainActivityUI.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.rayfantasy.icode.ui.layout
17+
package com.rayfantasy.icode.ui.layout.activity
1818

1919
import android.os.Build
20+
import android.provider.Contacts
2021
import android.support.design.widget.AppBarLayout
2122
import android.support.v4.view.GravityCompat
2223
import android.support.v7.app.ActionBarDrawerToggle
@@ -31,6 +32,7 @@ import com.rayfantasy.icode.theme.colorPrimary
3132
import com.rayfantasy.icode.theme.colorPrimaryDark
3233
import com.rayfantasy.icode.theme.observe
3334
import com.rayfantasy.icode.ui.activity.MainActivity
35+
import com.rayfantasy.icode.ui.layout.extra.NVhead
3436
import org.jetbrains.anko.*
3537
import org.jetbrains.anko.appcompat.v7.toolbar
3638
import org.jetbrains.anko.design.coordinatorLayout
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.rayfantasy.icode.ui.layout.extra
2+
3+
4+
import android.support.design.widget.NavigationView
5+
import android.view.View
6+
import com.benny.library.kbinding.view.ViewBinderComponent
7+
import com.rayfantasy.icode.R
8+
import com.rayfantasy.icode.extension.generateViewId
9+
import com.rayfantasy.icode.extension.lparams
10+
import com.rayfantasy.icode.theme.colorPrimary
11+
import com.rayfantasy.icode.theme.observe
12+
import org.jetbrains.anko.*
13+
14+
/**
15+
* Created by Allen on 2016/4/3.
16+
*/
17+
class NVhead : ViewBinderComponent<NavigationView> {
18+
companion object {
19+
val ID_USERICON = generateViewId()
20+
val ID_NV_BG = generateViewId()
21+
val ID_USERNAME = generateViewId()
22+
}
23+
24+
override fun builder(): AnkoContext<*>.() -> Unit = {
25+
verticalLayout {
26+
id = ID_NV_BG
27+
leftPadding = dip(20)
28+
observe(colorPrimary) { backgroundColor = it }
29+
30+
31+
imageView {
32+
id = ID_USERICON
33+
imageResource = R.mipmap.ic_nv_user
34+
}.lparams(dip(72), dip(72)) { topMargin = dip(20) }
35+
textView {
36+
id = ID_USERNAME
37+
textSize = sp(25).toFloat()
38+
setTextColor(R.color.nv_username)
39+
text = "未登录"
40+
}.lparams(matchParent, wrapContent) { topMargin = dip(20) }
41+
}.lparams(matchParent, dip(211))
42+
}
43+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.rayfantasy.icode.ui.layout.fragment
2+
3+
import android.app.Activity
4+
import android.app.Fragment
5+
import android.view.Gravity
6+
import com.benny.library.kbinding.view.ViewBinderComponent
7+
import com.rayfantasy.icode.R
8+
import com.rayfantasy.icode.extension.lparams
9+
import org.jetbrains.anko.*
10+
11+
/**
12+
* Created by Allen on 2016/4/3.
13+
*/
14+
class AboutFragmentUI() : ViewBinderComponent<Fragment> {
15+
override fun builder(): AnkoContext<*>.() -> Unit = {
16+
verticalLayout {
17+
imageView {
18+
setImageResource(R.mipmap.ic_launcher)
19+
gravity = Gravity.CENTER_HORIZONTAL or Gravity.TOP
20+
21+
}.lparams(dip(185),dip(185)){
22+
topMargin = dip(30)
23+
24+
}
25+
textView {
26+
text = "NULL"
27+
gravity = Gravity.CENTER
28+
textSize = sp(16).toFloat()
29+
//getStringResources(activity,R.string.app_name_cn)
30+
}.lparams(matchParent, wrapContent)
31+
textView {
32+
text = "NULL"
33+
gravity = Gravity.CENTER
34+
textSize = sp(12).toFloat()
35+
setTextAppearance(android.R.attr.textAppearanceMedium)
36+
//getStringResources(activity,R.string.app_name_cn)
37+
}.lparams(matchParent, wrapContent){ topMargin = dip(50) }
38+
}.lparams(matchParent, matchParent)
39+
}
40+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.rayfantasy.icode.ui.layout.fragment
2+
3+
import android.app.Fragment
4+
import com.benny.library.kbinding.view.ViewBinderComponent
5+
import com.rayfantasy.icode.extension.generateViewId
6+
import com.rayfantasy.icode.extension.lparams
7+
import org.jetbrains.anko.AnkoContext
8+
import org.jetbrains.anko.matchParent
9+
import org.jetbrains.anko.recyclerview.v7.recyclerView
10+
import org.jetbrains.anko.support.v4.swipeRefreshLayout
11+
12+
/**
13+
* Created by Allen on 2016/4/3.
14+
*/
15+
class FavoriteFragmentUI: ViewBinderComponent<Fragment> {
16+
companion object{
17+
val ID_SWIPE = generateViewId()
18+
val ID_RECYCLER = generateViewId()
19+
}
20+
override fun builder(): AnkoContext<*>.() -> Unit = {
21+
swipeRefreshLayout {
22+
id = ID_SWIPE
23+
recyclerView {
24+
id = ID_RECYCLER
25+
}.lparams(matchParent, matchParent)
26+
}.lparams(matchParent, matchParent)
27+
}
28+
}

0 commit comments

Comments
 (0)