Channel view maked and working
This commit is contained in:
parent
743c3147c1
commit
398265c6ed
|
@ -12,6 +12,8 @@
|
||||||
android:roundIcon="@mipmap/ic_p2play"
|
android:roundIcon="@mipmap/ic_p2play"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/P2playTheme">
|
android:theme="@style/P2playTheme">
|
||||||
|
<activity android:name=".ChannelActivity"
|
||||||
|
android:theme="@style/P2playTheme.noBar"></activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".SplashActivity"
|
android:name=".SplashActivity"
|
||||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
|
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
|
||||||
|
@ -27,9 +29,9 @@
|
||||||
android:theme="@style/P2playTheme.NoActionBar" />
|
android:theme="@style/P2playTheme.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ReproductorActivity"
|
android:name=".ReproductorActivity"
|
||||||
|
android:configChanges="orientation|screenSize"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
android:theme="@style/P2playTheme.noBar"
|
android:theme="@style/P2playTheme.noBar" />
|
||||||
android:configChanges="orientation|screenSize"/>
|
|
||||||
<activity android:name=".LoginActivity" />
|
<activity android:name=".LoginActivity" />
|
||||||
<activity android:name=".RegisterActivity" />
|
<activity android:name=".RegisterActivity" />
|
||||||
<activity android:name=".AboutActivity" />
|
<activity android:name=".AboutActivity" />
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
package org.libre.agosto.p2play
|
||||||
|
|
||||||
|
import android.os.AsyncTask
|
||||||
|
import android.support.v7.app.AppCompatActivity
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.support.v7.widget.LinearLayoutManager
|
||||||
|
import android.support.v7.widget.RecyclerView
|
||||||
|
import android.view.View
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
|
import kotlinx.android.synthetic.main.activity_channel.*
|
||||||
|
import org.libre.agosto.p2play.adapters.VideosAdapter
|
||||||
|
import org.libre.agosto.p2play.ajax.Actions
|
||||||
|
import org.libre.agosto.p2play.ajax.Channels
|
||||||
|
import org.libre.agosto.p2play.ajax.Videos
|
||||||
|
import org.libre.agosto.p2play.models.ChannelModel
|
||||||
|
import org.libre.agosto.p2play.models.VideoModel
|
||||||
|
|
||||||
|
class ChannelActivity : AppCompatActivity() {
|
||||||
|
private lateinit var channelId: String
|
||||||
|
private lateinit var channel: ChannelModel
|
||||||
|
private var isSubcribed: Boolean = false
|
||||||
|
private val _channel = Channels()
|
||||||
|
private val _videos = Videos()
|
||||||
|
private val _actions = Actions()
|
||||||
|
|
||||||
|
private lateinit var recyclerView: RecyclerView
|
||||||
|
private lateinit var viewAdapter: RecyclerView.Adapter<VideosAdapter.ViewHolder>
|
||||||
|
private lateinit var viewManager: RecyclerView.LayoutManager
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.activity_channel)
|
||||||
|
|
||||||
|
channelId = this.intent.extras.getString("channel")
|
||||||
|
|
||||||
|
viewManager = LinearLayoutManager(this)
|
||||||
|
|
||||||
|
subcriptionBtn.setOnClickListener {
|
||||||
|
subscribeAction()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
|
||||||
|
getChannel()
|
||||||
|
getSubscription()
|
||||||
|
getVideos()
|
||||||
|
|
||||||
|
if(ManagerSingleton.user.status == 1) {
|
||||||
|
subcriptionBtn.visibility = View.VISIBLE
|
||||||
|
getSubscription()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getChannel() {
|
||||||
|
AsyncTask.execute {
|
||||||
|
channel = _channel.getChannelInfo(channelId)
|
||||||
|
runOnUiThread {
|
||||||
|
usernameProfile.text = channel.name
|
||||||
|
hostTxt.text = channel.host
|
||||||
|
subcriptionsTxt.text = channel.followers.toString()
|
||||||
|
if(channel.channelImg != "")
|
||||||
|
Picasso.get().load("https://${ManagerSingleton.url}${channel.channelImg}").into(channelImg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun subscribe() {
|
||||||
|
AsyncTask.execute {
|
||||||
|
val res = _actions.subscribe(ManagerSingleton.token.token, channel.getAccount())
|
||||||
|
runOnUiThread {
|
||||||
|
if(res == 1){
|
||||||
|
subcriptionBtn.text = getString(R.string.unSubscribeBtn)
|
||||||
|
ManagerSingleton.Toast(getString(R.string.subscribeMsg), this)
|
||||||
|
getSubscription()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ManagerSingleton.Toast(getString(R.string.errorMsg), this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun unSubscribe() {
|
||||||
|
AsyncTask.execute {
|
||||||
|
val res = _actions.unSubscribe(ManagerSingleton.token.token, channel.getAccount())
|
||||||
|
runOnUiThread {
|
||||||
|
if(res == 1){
|
||||||
|
subcriptionBtn.text = getString(R.string.subscribeBtn)
|
||||||
|
ManagerSingleton.Toast(getString(R.string.unSubscribeMsg), this)
|
||||||
|
getSubscription()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ManagerSingleton.Toast(getString(R.string.errorMsg), this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun subscribeAction() {
|
||||||
|
if(isSubcribed)
|
||||||
|
unSubscribe()
|
||||||
|
else
|
||||||
|
subscribe()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getSubscription() {
|
||||||
|
AsyncTask.execute {
|
||||||
|
isSubcribed = _actions.getSubscription(ManagerSingleton.token.token, channel.getAccount())
|
||||||
|
runOnUiThread {
|
||||||
|
if(isSubcribed){
|
||||||
|
subcriptionBtn.text = getText(R.string.unSubscribeBtn)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
subcriptionBtn.text = getText(R.string.subscribeBtn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getVideos() {
|
||||||
|
AsyncTask.execute {
|
||||||
|
val videos = _videos.channelVideos(channel.getAccount(), 0)
|
||||||
|
runOnUiThread {
|
||||||
|
initRecycler(videos)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generic function for set data to RecyclerView
|
||||||
|
private fun initRecycler(data: ArrayList<VideoModel>){
|
||||||
|
// val data = arrayListOf<VideoModel>()
|
||||||
|
viewAdapter = VideosAdapter(data)
|
||||||
|
|
||||||
|
recyclerView = findViewById<RecyclerView>(R.id.listVideosChannel).apply {
|
||||||
|
// use this setting to improve performance if you know that changes
|
||||||
|
// in content do not change the layout size of the RecyclerView
|
||||||
|
setHasFixedSize(true)
|
||||||
|
|
||||||
|
// use a linear layout manager
|
||||||
|
layoutManager = viewManager
|
||||||
|
|
||||||
|
// specify an viewAdapter (see also next example)
|
||||||
|
adapter = viewAdapter
|
||||||
|
}
|
||||||
|
// swipeContainer.isRefreshing = false
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package org.libre.agosto.p2play
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.content.Intent
|
||||||
import android.content.pm.ActivityInfo
|
import android.content.pm.ActivityInfo
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.BitmapFactory
|
import android.graphics.BitmapFactory
|
||||||
|
@ -73,7 +74,6 @@ class ReproductorActivity : AppCompatActivity() {
|
||||||
// Load the video
|
// Load the video
|
||||||
videoView.loadUrl("https://"+ManagerSingleton.url+this.video.embedUrl)
|
videoView.loadUrl("https://"+ManagerSingleton.url+this.video.embedUrl)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (err:Exception){
|
catch (err:Exception){
|
||||||
err.printStackTrace()
|
err.printStackTrace()
|
||||||
|
@ -89,14 +89,19 @@ class ReproductorActivity : AppCompatActivity() {
|
||||||
dislikeLayout.setOnClickListener { rate("dislike") }
|
dislikeLayout.setOnClickListener { rate("dislike") }
|
||||||
commentaryBtn.setOnClickListener { makeComment() }
|
commentaryBtn.setOnClickListener { makeComment() }
|
||||||
showMoreBtn.setOnClickListener { getDescription() }
|
showMoreBtn.setOnClickListener { getDescription() }
|
||||||
|
|
||||||
|
userImg.setOnClickListener {
|
||||||
|
val intent = Intent(this, ChannelActivity::class.java)
|
||||||
|
intent.putExtra("channel", video.getAccount())
|
||||||
|
startActivity(intent)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun subscribe(){
|
private fun subscribe(){
|
||||||
val account = this.video.nameChannel+"@"+this.video.userHost
|
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
Looper.prepare()
|
Looper.prepare()
|
||||||
val res = this._actions.subscribe(ManagerSingleton.token.token, account)
|
val res = this._actions.subscribe(ManagerSingleton.token.token, video.getAccount())
|
||||||
if (res == 1) {
|
if (res == 1) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
ManagerSingleton.Toast(getString(R.string.subscribeMsg), this)
|
ManagerSingleton.Toast(getString(R.string.subscribeMsg), this)
|
||||||
|
@ -107,11 +112,10 @@ class ReproductorActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun unSubscribe(){
|
private fun unSubscribe(){
|
||||||
val account = this.video.nameChannel+"@"+this.video.userHost
|
|
||||||
AsyncTask.execute {
|
AsyncTask.execute {
|
||||||
if (Looper.myLooper() == null)
|
if (Looper.myLooper() == null)
|
||||||
Looper.prepare()
|
Looper.prepare()
|
||||||
val res = this._actions.unSubscribe(ManagerSingleton.token.token, account)
|
val res = this._actions.unSubscribe(ManagerSingleton.token.token, video.getAccount())
|
||||||
if (res == 1) {
|
if (res == 1) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
ManagerSingleton.Toast(getString(R.string.unSubscribeMsg), this)
|
ManagerSingleton.Toast(getString(R.string.unSubscribeMsg), this)
|
||||||
|
|
|
@ -14,10 +14,7 @@ import android.widget.ImageView
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
import org.libre.agosto.p2play.MainActivity
|
import org.libre.agosto.p2play.*
|
||||||
import org.libre.agosto.p2play.ManagerSingleton
|
|
||||||
import org.libre.agosto.p2play.R
|
|
||||||
import org.libre.agosto.p2play.ReproductorActivity
|
|
||||||
import org.libre.agosto.p2play.models.CommentaryModel
|
import org.libre.agosto.p2play.models.CommentaryModel
|
||||||
import org.libre.agosto.p2play.models.VideoModel
|
import org.libre.agosto.p2play.models.VideoModel
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
@ -63,6 +60,12 @@ class CommentariesAdapter(private val myDataset: ArrayList<CommentaryModel>) :
|
||||||
// - replace the contents of the view with that element
|
// - replace the contents of the view with that element
|
||||||
holder.username.text = myDataset[position].username
|
holder.username.text = myDataset[position].username
|
||||||
|
|
||||||
|
// holder.userImg.setOnClickListener {
|
||||||
|
// val intent = Intent(holder.context, ChannelActivity::class.java)
|
||||||
|
// intent.putExtra("channel", myDataset[position])
|
||||||
|
// holder.context.startActivity(intent)
|
||||||
|
// }
|
||||||
|
|
||||||
if(myDataset[position].userImageUrl!="")
|
if(myDataset[position].userImageUrl!="")
|
||||||
Picasso.get().load("https://"+ManagerSingleton.url+myDataset[position].userImageUrl).into(holder.userImg);
|
Picasso.get().load("https://"+ManagerSingleton.url+myDataset[position].userImageUrl).into(holder.userImg);
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,7 @@ import android.widget.ImageView
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
import org.libre.agosto.p2play.MainActivity
|
import org.libre.agosto.p2play.*
|
||||||
import org.libre.agosto.p2play.ManagerSingleton
|
|
||||||
import org.libre.agosto.p2play.R
|
|
||||||
import org.libre.agosto.p2play.ReproductorActivity
|
|
||||||
import org.libre.agosto.p2play.models.VideoModel
|
import org.libre.agosto.p2play.models.VideoModel
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
@ -69,6 +66,13 @@ class VideosAdapter(private val myDataset: ArrayList<VideoModel>) :
|
||||||
intent.putExtra("video", myDataset[position] as Serializable)
|
intent.putExtra("video", myDataset[position] as Serializable)
|
||||||
holder.context.startActivity(intent)
|
holder.context.startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
holder.userImg.setOnClickListener {
|
||||||
|
val intent = Intent(holder.context, ChannelActivity::class.java)
|
||||||
|
intent.putExtra("channel", myDataset[position].getAccount())
|
||||||
|
holder.context.startActivity(intent)
|
||||||
|
}
|
||||||
|
|
||||||
if(myDataset[position].userImageUrl!="")
|
if(myDataset[position].userImageUrl!="")
|
||||||
Picasso.get().load("https://"+ManagerSingleton.url+myDataset[position].userImageUrl).into(holder.userImg)
|
Picasso.get().load("https://"+ManagerSingleton.url+myDataset[position].userImageUrl).into(holder.userImg)
|
||||||
else
|
else
|
||||||
|
|
|
@ -16,8 +16,8 @@ class Channels: Client() {
|
||||||
return channel
|
return channel
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getChannelInfo(channelId: String): ChannelModel {
|
fun getChannelInfo(account: String): ChannelModel {
|
||||||
val con = this._newCon("video-channels/$channelId", "GET")
|
val con = this._newCon("video-channels/$account", "GET")
|
||||||
var channel = ChannelModel()
|
var channel = ChannelModel()
|
||||||
try {
|
try {
|
||||||
if(con.responseCode == 200){
|
if(con.responseCode == 200){
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.util.Log
|
||||||
import org.libre.agosto.p2play.ManagerSingleton
|
import org.libre.agosto.p2play.ManagerSingleton
|
||||||
import org.libre.agosto.p2play.models.HostModel
|
import org.libre.agosto.p2play.models.HostModel
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
|
import java.io.Reader
|
||||||
import java.net.HttpURLConnection
|
import java.net.HttpURLConnection
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
|
|
|
@ -154,4 +154,24 @@ class Videos: Client() {
|
||||||
con.disconnect()
|
con.disconnect()
|
||||||
return description
|
return description
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun channelVideos(account: String, start: Int): ArrayList<VideoModel> {
|
||||||
|
val count = ManagerSingleton.videos_count
|
||||||
|
val params = "start=$start&count=$count"
|
||||||
|
val con = this._newCon("video-channels/$account/videos","GET")
|
||||||
|
var videos = arrayListOf<VideoModel>()
|
||||||
|
try {
|
||||||
|
if (con.responseCode == 200) {
|
||||||
|
val response = InputStreamReader(con.inputStream)
|
||||||
|
val data = JsonReader(response)
|
||||||
|
videos = parseVideos(data)
|
||||||
|
data.close()
|
||||||
|
}
|
||||||
|
} catch(err:Exception){
|
||||||
|
err.printStackTrace()
|
||||||
|
}
|
||||||
|
|
||||||
|
con.disconnect()
|
||||||
|
return videos
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,154 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<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:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:context=".ChannelActivity">
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout2"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/colorProfile"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingTop="20dp"
|
||||||
|
android:paddingBottom="10dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/channelImg"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="70dp"
|
||||||
|
android:adjustViewBounds="false"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:contentDescription="@string/app_name"
|
||||||
|
android:cropToPadding="false"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
app:srcCompat="@drawable/default_avatar" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/usernameProfile"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:baselineAligned="false">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/followersIndicator"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/subcriptionsTxt"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:textAlignment="textStart"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/hostIndicator"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/hostTxt"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:textAlignment="textStart"
|
||||||
|
android:textColor="@android:color/white" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/subcriptionBtn"
|
||||||
|
style="@style/Widget.AppCompat.Button.Colored"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/subscribeBtn"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:visibility="invisible" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/frameLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:paddingRight="5dp"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/linearLayout2"
|
||||||
|
tools:layout_editor_absoluteX="0dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Videos:"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:layout_editor_absoluteX="176dp"
|
||||||
|
tools:layout_editor_absoluteY="214dp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<android.support.v7.widget.RecyclerView
|
||||||
|
android:id="@+id/listVideosChannel"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:scrollbars="none" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
|
@ -107,5 +107,10 @@
|
||||||
<string name="pref_message_exit">Restart app to apply changes</string>
|
<string name="pref_message_exit">Restart app to apply changes</string>
|
||||||
<string name="pref_videos_count_title">Videos per page</string>
|
<string name="pref_videos_count_title">Videos per page</string>
|
||||||
<!-- End Settings strings -->
|
<!-- End Settings strings -->
|
||||||
|
<!-- Start Channel strings -->
|
||||||
|
<string name="followersIndicator">Followers:</string>
|
||||||
|
<string name="hostIndicator">Host:</string>
|
||||||
|
<!-- End Channel strings -->
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in New Issue