Skip to content

Commit

Permalink
add slideshow to main page.
Browse files Browse the repository at this point in the history
  • Loading branch information
yueeng committed Sep 10, 2015
1 parent 772e34a commit 5adb3ba
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 3 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
applicationId "io.github.yueeng.hacg"
minSdkVersion 14
targetSdkVersion 23
versionCode 11
versionName "1.0.7.1"
versionCode 12
versionName "1.0.8"
multiDexEnabled true
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
}
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_scrollFlags="scroll|enterAlways" />

<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="wrap_content"
Expand Down
84 changes: 83 additions & 1 deletion app/src/main/scala/io/github/yueeng/hacg/MainActivity.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package io.github.yueeng.hacg

import android.app.SearchManager
import android.content._
import android.graphics.Point
import android.net.Uri
import android.os.{Bundle, Parcelable}
import android.provider.SearchRecentSuggestions
import android.support.design.widget.{Snackbar, TabLayout}
import android.support.v4.app._
import android.support.v4.view.{MenuItemCompat, ViewPager}
import android.support.v4.view.ViewPager.SimpleOnPageChangeListener
import android.support.v4.view.{MenuItemCompat, PagerAdapter, ViewPager}
import android.support.v4.widget.SwipeRefreshLayout
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
import android.support.v7.app.AlertDialog.Builder
Expand All @@ -19,6 +21,7 @@ import android.text.style.{BackgroundColorSpan, ClickableSpan}
import android.text.{SpannableStringBuilder, Spanned, TextPaint}
import android.view.View.OnClickListener
import android.view._
import android.widget.ImageView.ScaleType
import android.widget._
import com.squareup.picasso.Picasso
import io.github.yueeng.hacg.Common._
Expand All @@ -28,6 +31,7 @@ import scala.collection.mutable.ArrayBuffer

class MainActivity extends AppCompatActivity {
lazy val pager: ViewPager = findViewById(R.id.container)
lazy val ad: ViewPager = findViewById(R.id.pager)

protected override def onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
Expand All @@ -39,11 +43,89 @@ class MainActivity extends AppCompatActivity {
val adapter = new ArticleFragmentAdapter(getSupportFragmentManager)
pager.setAdapter(adapter)
tabs.setupWithViewPager(pager)

val crop = getWindowManager.getDefaultDisplay match {
case d: Display =>
val lp = ad.getLayoutParams
val p = new Point()
d.getSize(p)
lp.height = Math.min(p.x * 225 / 550, p.y / 3)
ad.setLayoutParams(lp)
p.x < p.y
case _ => ad.setVisibility(View.GONE); false
}
ad.setAdapter(new AdAdapter(crop))

ad.addOnPageChangeListener(new SimpleOnPageChangeListener {
override def onPageScrollStateChanged(state: Int): Unit = {
state match {
case ViewPager.SCROLL_STATE_DRAGGING => adstop()
case ViewPager.SCROLL_STATE_IDLE => adstart()
case _ =>
}
}
})
//hack align tab by left
tabs.smoothScrollTo(0, 0)
checkVersion(false)
}

override def onPause(): Unit = {
super.onPause()
adstop()
}


override def onResume(): Unit = {
super.onResume()
adstart()
}

val adspan = 5000

def adstart() = {
ad.removeCallbacks(adrun)
ad.postDelayed(adrun, adspan)
}

def adstop() = ad.removeCallbacks(adrun)

def adchange(): Unit = {
ad.setCurrentItem(ad.getCurrentItem + 1 match {
case x if x >= ad.getAdapter.getCount => 0
case x => x
})
ad.postDelayed(adrun, adspan)
}

val adrun: Runnable = runnable { () =>
ad.setCurrentItem(ad.getCurrentItem + 1 match {
case x if x >= ad.getAdapter.getCount => 0
case x => x
})
ad.postDelayed(adrun, adspan)
}

class AdAdapter(crop: Boolean) extends PagerAdapter {
override def isViewFromObject(view: View, `object`: scala.Any): Boolean = view == `object`

override def getCount: Int = 4

override def instantiateItem(container: ViewGroup, position: Int): AnyRef = {
val image = new ImageView(container.getContext)
image.setAdjustViewBounds(true)
if (crop) image.setScaleType(ScaleType.CENTER_CROP)
image.setOnClickListener(viewClick { v => Common.openWeb(MainActivity.this, s"http://hacg.club/gg/${position + 1}") })
Picasso.`with`(container.getContext).load(s"http://hacg.club/gg/${position + 1}.jpg").into(image)
container.addView(image)
image
}

override def destroyItem(container: ViewGroup, position: Int, `object`: scala.Any): Unit = {
container.removeView(`object`.asInstanceOf[View])
}
}

override def onBackPressed(): Unit = {
Snackbar.make(findViewById(R.id.coordinator), R.string.app_exit_confirm, Snackbar.LENGTH_SHORT)
.setAction(R.string.app_exit, viewClick { v => ActivityCompat.finishAfterTransition(MainActivity.this) })
Expand Down

0 comments on commit 5adb3ba

Please sign in to comment.