Author: Adam Pioterek <adam.pioterek@protonmail.ch>
stop activity
app/src/main/AndroidManifest.xml | 7 app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt | 14 app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt | 158 ++++++++ app/src/main/java/ml/adamsprogs/bimba/Timetable.kt | 73 --- app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt | 8 app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt | 34 + app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt | 74 +++ app/src/main/res/layout/activity_stop.xml | 70 +++ app/src/main/res/layout/fragment_stop.xml | 22 + app/src/main/res/menu/menu_stop.xml | 10 app/src/main/res/values-w820dp/dimens.xml | 6 app/src/main/res/values/dimens.xml | 7 app/src/main/res/values/strings.xml | 6 app/src/main/res/values/styles.xml | 18
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 01a80a30c4361b8dbb1210f086a49e91bc3c630e..8b46aadd10b48588229b5dfe08364b0c8320b3de 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,12 @@ <service android:name=".TimetableDownloader" - android:exported="false"></service> + android:exported="false" /> + + <activity + android:name=".StopActivity" + android:label="@string/title_activity_stop" + android:theme="@style/AppTheme"></activity> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt b/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt index ed34be718fdb15b1e24211e90959d629ddb09513..00875105ba4698acdaaeda8a79938c8c42e4fcde 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt @@ -12,6 +12,8 @@ import android.view.View import android.widget.Toast import com.arlib.floatingsearchview.FloatingSearchView import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion +import ml.adamsprogs.bimba.models.Suggestion +import ml.adamsprogs.bimba.models.Timetable import kotlin.concurrent.thread class MainActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadListener { @@ -19,7 +21,7 @@ lateinit var listener: MessageReceiver.OnTimetableDownloadListener lateinit var receiver: MessageReceiver lateinit var layout: View lateinit var timetable: Timetable - var stops: ArrayList<Timetable.Suggestion>? = null + var stops: ArrayList<Suggestion>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -27,7 +29,7 @@ setContentView(R.layout.activity_main) AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO) layout = findViewById(R.id.main_layout) - val context = this as Context + val context = this listener = this val filter = IntentFilter("ml.adamsprogs.bimba.timetableDownloaded") @@ -56,15 +58,17 @@ }) searchView.setOnSearchListener(object : FloatingSearchView.OnSearchListener { override fun onSuggestionClicked(searchSuggestion: SearchSuggestion) { - Toast.makeText(context, "clicked "+ (searchSuggestion as Timetable.Suggestion).id, Toast.LENGTH_SHORT).show() - //todo to next screen + Toast.makeText(context, "clicked "+ (searchSuggestion as Suggestion).id, Toast.LENGTH_SHORT).show() + intent = Intent(context, StopActivity::class.java) + intent.putExtra("stop", searchSuggestion.id) + startActivity(intent) } override fun onSearchAction(query: String) { } }) searchView.setOnBindSuggestionCallback { _, _, textView, item, _ -> - val suggestion = item as Timetable.Suggestion + val suggestion = item as Suggestion val text = suggestion.body.split("\n") val t = "<small><font color=\"#a0a0a0\">" + text[1] + "</font></small>" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { diff --git a/app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt b/app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..e6bf803f6d10ffca211250ec6e1ba103d5234367 --- /dev/null +++ b/app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt @@ -0,0 +1,158 @@ +package ml.adamsprogs.bimba + +import android.support.design.widget.TabLayout +import android.support.design.widget.FloatingActionButton +import android.support.design.widget.Snackbar +import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.Toolbar + +import android.support.v4.app.Fragment +import android.support.v4.app.FragmentManager +import android.support.v4.app.FragmentPagerAdapter +import android.support.v4.view.ViewPager +import android.os.Bundle +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup + +import android.widget.TextView +import ml.adamsprogs.bimba.models.Departure +import ml.adamsprogs.bimba.models.Timetable + +class StopActivity : AppCompatActivity() { + + private lateinit var stopId: String + private var departures: HashMap<String, ArrayList<Departure>>? = null + + /** + * The [android.support.v4.view.PagerAdapter] that will provide + * fragments for each of the sections. We use a + * [FragmentPagerAdapter] derivative, which will keep every + * loaded fragment in memory. If this becomes too memory intensive, it + * may be best to switch to a + * [android.support.v4.app.FragmentStatePagerAdapter]. + */ + private var sectionsPagerAdapter: SectionsPagerAdapter? = null + + /** + * The [ViewPager] that will host the section contents. + */ + private var viewPager: ViewPager? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_stop) + stopId = intent.getStringExtra("stop") + + //todo hiding on scroll + val toolbar = findViewById(R.id.toolbar) as Toolbar + setSupportActionBar(toolbar) + + val timetable = Timetable(this) + supportActionBar?.title = timetable.getStopName(stopId) ?: "Stop" + departures = timetable.getStopDepartures(stopId) + //todo if departures == null -> … + + sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager) + + viewPager = findViewById(R.id.container) as ViewPager + viewPager!!.adapter = sectionsPagerAdapter + + val tabLayout = findViewById(R.id.tabs) as TabLayout + + viewPager!!.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabLayout)) + tabLayout.addOnTabSelectedListener(TabLayout.ViewPagerOnTabSelectedListener(viewPager)) + + //todo move to view + val fab = findViewById(R.id.fab) as FloatingActionButton + fab.setOnClickListener { view -> + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show() + } + + } + + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_stop, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + val id = item.itemId + + + if (id == R.id.action_settings) { + return true + } + + return super.onOptionsItemSelected(item) + } + + /** + * A placeholder fragment containing a simple view. + */ + class PlaceholderFragment : Fragment() { + + //todo add list + override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + val rootView = inflater!!.inflate(R.layout.fragment_stop, container, false) + val textView = rootView.findViewById(R.id.section_label) as TextView + var ttString: String = "" + for (row in arguments.getStringArrayList("departures")) { + ttString += row + "\n" + } + textView.text = getString(R.string.section_format, arguments.getInt(ARG_SECTION_NUMBER), + arguments.getString("stop")) + "\n===\n" + ttString + return rootView + } + + companion object { + /** + * The fragment argument representing the section number for this + * fragment. + */ + private val ARG_SECTION_NUMBER = "section_number" + + /** + * Returns a new instance of this fragment for the given section + * number. + */ + fun newInstance(sectionNumber: Int, stopId: String, departures: ArrayList<Departure>?): PlaceholderFragment { + val fragment = PlaceholderFragment() + val args = Bundle() + args.putInt(ARG_SECTION_NUMBER, sectionNumber) + args.putString("stop", stopId) + val d = ArrayList<String>() + departures?.mapTo(d) { it.toString() } + args.putStringArrayList("departures", d) + fragment.arguments = args + return fragment + } + } + } + + /** + * A [FragmentPagerAdapter] that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ + inner class SectionsPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + var mode: String? = null + when (position) { + 0 -> mode = "workdays" + 1 -> mode = "saturdays" + 2 -> mode = "sundays" + } + return PlaceholderFragment.newInstance(position + 1, stopId, departures?.get(mode)) + } + + override fun getCount(): Int { + return 3 + } + } +} diff --git a/app/src/main/java/ml/adamsprogs/bimba/Timetable.kt b/app/src/main/java/ml/adamsprogs/bimba/Timetable.kt deleted file mode 100644 index 09359756979a700f4b5d635ba8d8d51d8395b63c..0000000000000000000000000000000000000000 --- a/app/src/main/java/ml/adamsprogs/bimba/Timetable.kt +++ /dev/null @@ -1,73 +0,0 @@ -package ml.adamsprogs.bimba - -import android.content.Context -import android.database.sqlite.SQLiteCantOpenDatabaseException -import android.database.sqlite.SQLiteDatabase -import android.os.Parcel -import android.os.Parcelable -import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion -import java.io.File - -class Timetable() { - var db: SQLiteDatabase? = null - lateinit var context: Context - - constructor(context: Context) : this() { - this.context = context - readDbFile() - } - - fun refresh() { - readDbFile() - } - - private fun readDbFile() { - try { - db = SQLiteDatabase.openDatabase(File(context.filesDir, "new_timetable.db").path, - null, SQLiteDatabase.OPEN_READONLY) - } catch(e: SQLiteCantOpenDatabaseException) { - db = null - } - } - - fun getStops(): ArrayList<Suggestion>? { - if (db == null) - return null - val cursor = db!!.rawQuery("select name ||char(10)|| headsigns as suggestion, id from stops" + - " join nodes on(stops.symbol = nodes.symbol);", null) - val stops = ArrayList<Suggestion>() - while (cursor.moveToNext()) - stops.add(Suggestion(cursor.getString(0), cursor.getString(1))) - cursor.close() - return stops - } - - class Suggestion(text: String, val id: String) : SearchSuggestion { - private val body: String = text - - constructor(parcel: Parcel) : this(parcel.readString(), parcel.readString()) - - override fun describeContents(): Int { - TODO("not implemented") - } - - override fun writeToParcel(dest: Parcel?, flags: Int) { - dest?.writeString(body) - dest?.writeString(id) - } - - override fun getBody(): String { - return body - } - - companion object CREATOR : Parcelable.Creator<Suggestion> { - override fun createFromParcel(parcel: Parcel): Suggestion { - return Suggestion(parcel) - } - - override fun newArray(size: Int): Array<Suggestion?> { - return arrayOfNulls(size) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt new file mode 100644 index 0000000000000000000000000000000000000000..549195ada01b6a947353fc24e78d6dbf0834022c --- /dev/null +++ b/app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt @@ -0,0 +1,8 @@ +package ml.adamsprogs.bimba.models + +data class Departure(val line: String, val mode: String, val time: String, val lowFloor: Boolean, + val modification: String?, val direction: String) { + override fun toString():String { + return "$line|$mode|$time|$lowFloor|$modification|$direction" + } +} \ No newline at end of file diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt new file mode 100644 index 0000000000000000000000000000000000000000..164133f2f8145aad9b2fc9293880dfadaa2b9565 --- /dev/null +++ b/app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt @@ -0,0 +1,34 @@ +package ml.adamsprogs.bimba.models + +import android.os.Parcel +import android.os.Parcelable +import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion + +class Suggestion(text: String, val id: String) : SearchSuggestion { + private val body: String = text + + constructor(parcel: Parcel) : this(parcel.readString(), parcel.readString()) + + override fun describeContents(): Int { + TODO("not implemented") + } + + override fun writeToParcel(dest: Parcel?, flags: Int) { + dest?.writeString(body) + dest?.writeString(id) + } + + override fun getBody(): String { + return body + } + + companion object CREATOR : Parcelable.Creator<Suggestion> { + override fun createFromParcel(parcel: Parcel): Suggestion { + return Suggestion(parcel) + } + + override fun newArray(size: Int): Array<Suggestion?> { + return arrayOfNulls(size) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt new file mode 100644 index 0000000000000000000000000000000000000000..96fc59918897610fde931c43e8243e8022dfd971 --- /dev/null +++ b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt @@ -0,0 +1,74 @@ +package ml.adamsprogs.bimba.models + +import android.content.Context +import android.database.sqlite.SQLiteCantOpenDatabaseException +import android.database.sqlite.SQLiteDatabase +import android.util.Log +import java.io.File + +class Timetable(var context: Context) { + var db: SQLiteDatabase? = null + + fun refresh() { + readDbFile() + } + + private fun readDbFile() { + try { + db = SQLiteDatabase.openDatabase(File(context.filesDir, "new_timetable.db").path, + null, SQLiteDatabase.OPEN_READONLY) + } catch(e: SQLiteCantOpenDatabaseException) { + Log.e("Timetable", "Cannot open db") + db = null + } + } + + fun getStops(): ArrayList<Suggestion>? { + if (db == null) + return null + val cursor = db!!.rawQuery("select name ||char(10)|| headsigns as suggestion, id from stops" + + " join nodes on(stops.symbol = nodes.symbol) order by name, id;", null) + val stops = ArrayList<Suggestion>() + while (cursor.moveToNext()) + stops.add(Suggestion(cursor.getString(0), cursor.getString(1))) + cursor.close() + return stops + } + + fun getStopName(stopId: String): String? { + if (db == null) + return null + val cursor = db!!.rawQuery("select name from nodes join stops on(stops.symbol = nodes.symbol) where id = ?;", + listOf(stopId).toTypedArray()) + val name: String + cursor.moveToNext() + name = cursor.getString(0) + cursor.close() + return name + } + + fun getStopDepartures(stopId: String): HashMap<String, ArrayList<Departure>>? { + if (db == null) + return null + val cursor = db!!.rawQuery("select lines.number, mode, hour || ':' || minute as time, lowFloor, " + + "modification, headsign from departures join timetables on(timetable_id = timetables.id) " + + "join lines on(line_id = lines.id) where stop_id = ?;", listOf(stopId).toTypedArray()) + val departures = HashMap<String, ArrayList<Departure>>() + departures.put("workdays", ArrayList()) + departures.put("saturdays", ArrayList()) + departures.put("sundays", ArrayList()) + //todo only 10(?) after than now + while (cursor.moveToNext()) { + departures[cursor.getString(1)]?.add(Departure(cursor.getString(0), + cursor.getString(1), cursor.getString(2), cursor.getInt(3) == 1, + cursor.getString(4), cursor.getString(5))) + } + cursor.close() + return departures + } + + init { + readDbFile() + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_stop.xml b/app/src/main/res/layout/activity_stop.xml new file mode 100644 index 0000000000000000000000000000000000000000..1710dd5e3b705e13f8a7d490d45c52ac8d11dc78 --- /dev/null +++ b/app/src/main/res/layout/activity_stop.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8"?> +<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/main_content" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fitsSystemWindows="true" + tools:context="ml.adamsprogs.bimba.StopActivity"> + + <android.support.design.widget.AppBarLayout + android:id="@+id/appbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingTop="@dimen/appbar_padding_top" + android:theme="@style/AppTheme.AppBarOverlay"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:layout_weight="1" + android:background="?attr/colorPrimary" + app:layout_scrollFlags="scroll|enterAlways" + app:popupTheme="@style/AppTheme.PopupOverlay" + app:title="@string/app_name"> + + </android.support.v7.widget.Toolbar> + + <android.support.design.widget.TabLayout + android:id="@+id/tabs" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <android.support.design.widget.TabItem + android:id="@+id/tabItem" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/tab_workday_text" /> + + <android.support.design.widget.TabItem + android:id="@+id/tabItem2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/tab_saturday_text" /> + + <android.support.design.widget.TabItem + android:id="@+id/tabItem3" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/tab_sunday_text" /> + + </android.support.design.widget.TabLayout> + </android.support.design.widget.AppBarLayout> + + <android.support.v4.view.ViewPager + android:id="@+id/container" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + <android.support.design.widget.FloatingActionButton + android:id="@+id/fab" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="end|bottom" + android:layout_margin="@dimen/fab_margin" + app:srcCompat="@android:drawable/ic_dialog_email" /> + +</android.support.design.widget.CoordinatorLayout> diff --git a/app/src/main/res/layout/fragment_stop.xml b/app/src/main/res/layout/fragment_stop.xml new file mode 100644 index 0000000000000000000000000000000000000000..629a92459b447058afe4af7a61befcd311831879 --- /dev/null +++ b/app/src/main/res/layout/fragment_stop.xml @@ -0,0 +1,22 @@ +<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/constraintLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context="ml.adamsprogs.bimba.StopActivity$PlaceholderFragment"> + + <TextView + android:id="@+id/section_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/activity_vertical_margin" + android:layout_marginEnd="@dimen/activity_horizontal_margin" + android:layout_marginStart="@dimen/activity_horizontal_margin" + android:layout_marginTop="@dimen/activity_vertical_margin" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="@+id/constraintLayout" + tools:layout_constraintLeft_creator="1" + tools:layout_constraintTop_creator="1" /> + +</android.support.constraint.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/menu/menu_stop.xml b/app/src/main/res/menu/menu_stop.xml new file mode 100644 index 0000000000000000000000000000000000000000..7720939501218c238b85fe59cc7d9633e32b3f9d --- /dev/null +++ b/app/src/main/res/menu/menu_stop.xml @@ -0,0 +1,10 @@ +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + tools:context="ml.adamsprogs.bimba.StopActivity"> + <item + android:id="@+id/action_settings" + android:orderInCategory="100" + android:title="@string/action_settings" + app:showAsAction="never" /> +</menu> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..cef3abc49462768db38c80489d50543472c42b1b --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,7 @@ +<resources> + <!-- Default screen margins, per the Android Design guidelines. --> + <dimen name="activity_horizontal_margin">16dp</dimen> + <dimen name="activity_vertical_margin">16dp</dimen> + <dimen name="fab_margin">16dp</dimen> + <dimen name="appbar_padding_top">8dp</dimen> +</resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe6ece5dfd656228837d8e0a13569a97b33699bd..f2054964b72b6e2a30bb5e71774ebb39937049eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,4 +2,10 @@<string name="app_name">Bimba</string> <string name="no_timetable">No timetable found. Connect to the Internet and wait for a timetable to be downloaded</string> <string name="timetable_downloaded">New timetable downloaded</string> + <string name="title_activity_stop">StopActivity</string> + <string name="tab_workday_text">Workdays</string> + <string name="tab_saturday_text">Saturdays</string> + <string name="tab_sunday_text">Sundays</string> + <string name="action_settings">Settings</string> + <string name="section_format">Hello World from section: %1$d, stop: %2$s</string> </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ea2446c6caecb1a1d773a10eded21d0081c93c9f..84afd02b1243e739b01443d453476dc5669fcea4 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,12 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <resources> -<!-- Base application theme. --> -<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> - <!-- Customize your theme here. --> - <item name="colorPrimary">@color/colorPrimary</item> - <item name="colorPrimaryDark">@color/colorPrimaryDark</item> - <item name="colorAccent">@color/colorAccent</item> -</style> + <!-- Base application theme. --> + <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> + <!-- Customize your theme here. --> + <item name="colorPrimary">@color/colorPrimary</item> + <item name="colorPrimaryDark">@color/colorPrimaryDark</item> + <item name="colorAccent">@color/colorAccent</item> + </style> + + <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> + + <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> </resources> diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..63fc816444614bd64f68a372d1f93211628ee51d --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ +<resources> + <!-- Example customization of dimensions originally defined in res/values/dimens.xml + (such as screen margins) for screens with more than 820dp of available width. This + would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> + <dimen name="activity_horizontal_margin">64dp</dimen> +</resources>