Commit 311ed22d authored by wanglei's avatar wanglei

重写电池信息页面

parent 003faa1b
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<application <application
android:name=".MyApplication" android:name=".MyApplication"
android:allowBackup="true" android:allowBackup="true"
...@@ -19,7 +19,9 @@ ...@@ -19,7 +19,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.EasyFileManager" android:theme="@style/Theme.EasyFileManager"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".activity.BatteryActivity"
android:exported="false" />
<activity <activity
android:name=".activity.splash.SplashActivity" android:name=".activity.splash.SplashActivity"
android:exported="true" android:exported="true"
......
package com.base.easyfilemanager.activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.graphics.Color
import android.graphics.drawable.ClipDrawable
import android.os.BatteryManager
import android.view.View
import androidx.activity.addCallback
import androidx.core.content.ContextCompat
import com.base.easyfilemanager.R
import com.base.easyfilemanager.databinding.ActivityBatteryBinding
import com.base.easyfilemanager.helps.BarUtils
import com.base.easyfilemanager.helps.BaseActivity
import com.base.easyfilemanager.helps.LogEx
import com.base.easyfilemanager.helps.ads.AdmobUtils
import kotlin.math.roundToInt
/**
* 充电中50以上绿色 50-20黄色 20以下红色
*/
class BatteryActivity : BaseActivity<ActivityBatteryBinding>() {
private val TAG = "BatteryActivity"
private lateinit var receiver: BatteryReceiver
override val binding: ActivityBatteryBinding by lazy {
ActivityBatteryBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
BarUtils.setStatusBarLightMode(this, true)
val clipDrawable = binding.ivBatteryClip.drawable as ClipDrawable
clipDrawable.level = 10000
receiver = BatteryReceiver()
val filter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
registerReceiver(receiver, filter)
val bm = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
val chargeCounter = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
val pCapacity = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
LogEx.logDebug(TAG, "chargeCounter=$chargeCounter pCapacity=$pCapacity")
if (chargeCounter != Int.MIN_VALUE && pCapacity != Int.MIN_VALUE) {
val value = (chargeCounter / (pCapacity.toFloat() / 100f)) / 1000f
binding.tvPower.text = "${value.toInt()} mAh"
}
AdmobUtils.showNativeAd(this, binding.flAd)
}
override fun initListener() {
onBackPressedDispatcher.addCallback {
AdmobUtils.showInterstitialAd(this@BatteryActivity) {
finishToMain()
}
}
binding.tvGotIt.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
override fun onDestroy() {
unregisterReceiver(receiver)
}
private inner class BatteryReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val current = intent?.extras?.getInt("level") ?: 0
val total = intent?.extras?.getInt("scale") ?: 0
var percent = current * 100 / total
binding.tvPercent.text = "$percent %"
var clipDrawable: ClipDrawable? = null
when (percent) {
in 0..19 -> {
clipDrawable = ContextCompat.getDrawable(this@BatteryActivity, R.drawable.battery_clip_red) as ClipDrawable
binding.ivBatteryClip.setImageDrawable(clipDrawable)
binding.flBattery.background = ContextCompat.getDrawable(this@BatteryActivity, R.mipmap.battery_red)
}
in 20..50 -> {
clipDrawable = ContextCompat.getDrawable(this@BatteryActivity, R.drawable.battery_clip_yellow) as ClipDrawable
binding.ivBatteryClip.setImageDrawable(clipDrawable)
binding.flBattery.background = ContextCompat.getDrawable(this@BatteryActivity, R.mipmap.battery_yellow)
}
in 51..100 -> {
clipDrawable = ContextCompat.getDrawable(this@BatteryActivity, R.drawable.battery_clip_lv) as ClipDrawable
binding.ivBatteryClip.setImageDrawable(clipDrawable)
binding.flBattery.background = ContextCompat.getDrawable(this@BatteryActivity, R.mipmap.battery_lv)
}
}
val voltage = intent?.getIntExtra("voltage", 0)?.toFloat()?.roundToInt() ?: 0
val voltageValue = voltage / 1000f
binding.tvVoltage.text = "${String.format("%.1f", voltageValue)} V"
val temperature = intent?.getIntExtra("temperature", 0)?.toFloat()?.roundToInt() ?: 0
binding.tvTemperature.text = "${temperature / 10f}°C"
val batteryChargeState = intent?.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) ?: 0
LogEx.logDebug(TAG, "batteryChargeState=$batteryChargeState")
if (batteryChargeState != 0) {
clipDrawable = ContextCompat.getDrawable(this@BatteryActivity, R.drawable.battery_clip_lv) as ClipDrawable
binding.ivBatteryClip.setImageDrawable(clipDrawable)
binding.flBattery.background = ContextCompat.getDrawable(this@BatteryActivity, R.mipmap.battery_lv)
binding.ivChongdian.visibility = View.VISIBLE
} else {
binding.ivChongdian.visibility = View.GONE
}
clipDrawable?.level = current * 10000 / total
}
}
}
\ No newline at end of file
...@@ -2,12 +2,13 @@ package com.base.easyfilemanager.activity.splash ...@@ -2,12 +2,13 @@ package com.base.easyfilemanager.activity.splash
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import com.base.easyfilemanager.activity.BatteryActivity
import com.base.easyfilemanager.activity.MainActivity import com.base.easyfilemanager.activity.MainActivity
object SplashJumpUtils { object SplashJumpUtils {
fun jumpNextPage(context: Activity) { fun jumpNextPage(context: Activity) {
context.startActivity(Intent(context, MainActivity::class.java)) context.startActivity(Intent(context, BatteryActivity::class.java))
context.finish() context.finish()
} }
} }
\ No newline at end of file
...@@ -10,6 +10,12 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -10,6 +10,12 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.easyfilemanager.R import com.base.easyfilemanager.R
import com.base.easyfilemanager.bean.FileBean import com.base.easyfilemanager.bean.FileBean
import com.base.easyfilemanager.bean.FileBean.Companion.isApk
import com.base.easyfilemanager.bean.FileBean.Companion.isAudio
import com.base.easyfilemanager.bean.FileBean.Companion.isEmptyFile
import com.base.easyfilemanager.bean.FileBean.Companion.isImage
import com.base.easyfilemanager.bean.FileBean.Companion.isVideo
import com.base.easyfilemanager.bean.FileBean.Companion.isZip
import com.base.easyfilemanager.databinding.ItemFileListBinding import com.base.easyfilemanager.databinding.ItemFileListBinding
import com.base.easyfilemanager.helps.XmlEx.inflate import com.base.easyfilemanager.helps.XmlEx.inflate
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
......
...@@ -56,20 +56,19 @@ class FileManagerAdapter( ...@@ -56,20 +56,19 @@ class FileManagerAdapter(
} }
private fun bindIcon(data: FileBean, iv: ImageView) { private fun bindIcon(data: FileBean, iv: ImageView) {
val file = File(data.path)
when { when {
isDir(file) -> iv.setImageResource(R.mipmap.dir) data.isDir() -> iv.setImageResource(R.mipmap.dir)
isImage(file) or isVideo(file) -> { data.isImage() or data.isVideo() -> {
Glide.with(iv.context) Glide.with(iv.context)
.load(data.path) .load(data.path)
.centerCrop() .centerCrop()
.into(iv) .into(iv)
} }
isAudio(file) -> iv.setImageResource(R.mipmap.audio) data.isAudio() -> iv.setImageResource(R.mipmap.audio)
isZip(file) -> iv.setImageResource(R.mipmap.zip) data.isZip() -> iv.setImageResource(R.mipmap.zip)
isApk(file) -> iv.setImageResource(R.mipmap.apk) data.isApk() -> iv.setImageResource(R.mipmap.apk)
isDocument(file) -> iv.setImageResource(R.mipmap.file) data.isDocument() -> iv.setImageResource(R.mipmap.file)
else -> iv.setImageResource(R.mipmap.file) else -> iv.setImageResource(R.mipmap.file)
} }
} }
......
...@@ -6,42 +6,31 @@ data class FileBean( ...@@ -6,42 +6,31 @@ data class FileBean(
var name: String = "", var name: String = "",
var path: String, var path: String,
val size: Long, val size: Long,
val isDir: Boolean = false,
var type: String = "", var type: String = "",
val time: Long = 0L, val time: Long = 0L,
var isSelect: Boolean = false var isSelect: Boolean = false
) { ) {
fun isEmptyFile() = !isDir && (File(path).length() == 0L)
fun isEmptyDir() = isDir
fun isImage() = !isDir && type in listOf("png", "jpg", "gif")
fun isVideo() = !isDir && type in listOf("mp4")
fun isAudio() = !isDir && type in listOf("mp3")
fun isZip() = !isDir && type in listOf("zip", "tar", "7z")
fun isApk() = !isDir && type in listOf("apk")
companion object { companion object {
fun isDir(file: File): Boolean { fun FileBean.isDir(): Boolean {
val file = File(path)
return file.isDirectory return file.isDirectory
} }
fun isEmptyFile(file: File): Boolean { fun FileBean.isEmptyFile(): Boolean {
val file = File(path)
return file.isFile && file.length() == 0L return file.isFile && file.length() == 0L
} }
fun isImage(file: File): Boolean { fun FileBean.isImage(): Boolean {
val file = File(path)
return file.name.contains(".jpg") or return file.name.contains(".jpg") or
file.name.contains(".png") or file.name.contains(".png") or
file.name.contains(".gif") file.name.contains(".gif")
} }
fun isVideo(file: File): Boolean { fun FileBean.isVideo(): Boolean {
val file = File(path)
return file.name.contains(".mp4") or return file.name.contains(".mp4") or
file.name.contains(".avi") or file.name.contains(".avi") or
file.name.contains(".flv") or file.name.contains(".flv") or
...@@ -49,7 +38,8 @@ data class FileBean( ...@@ -49,7 +38,8 @@ data class FileBean(
file.name.contains(".mkv") file.name.contains(".mkv")
} }
fun isAudio(file: File): Boolean { fun FileBean.isAudio(): Boolean {
val file = File(path)
return file.name.contains(".mp3") or return file.name.contains(".mp3") or
file.name.contains(".aac") or file.name.contains(".aac") or
file.name.contains(".ogg") or file.name.contains(".ogg") or
...@@ -57,20 +47,19 @@ data class FileBean( ...@@ -57,20 +47,19 @@ data class FileBean(
file.name.contains(".aac") file.name.contains(".aac")
} }
fun isLargeFile(file: File): Boolean {
return file.length() >= 10 * 1024 * 1024
}
fun isZip(file: File): Boolean { fun FileBean.isZip(): Boolean {
val file = File(path)
return file.name.contains(".zip") return file.name.contains(".zip")
} }
fun isApk(file: File): Boolean { fun FileBean.isApk(): Boolean {
val file = File(path)
return file.name.contains(".apk") return file.name.contains(".apk")
} }
fun isDocument(file: File): Boolean { fun FileBean.isDocument(): Boolean {
val file = File(path)
return file.name.contains(".doc") or return file.name.contains(".doc") or
file.name.contains(".docx") or file.name.contains(".docx") or
file.name.contains(".ppt") or file.name.contains(".ppt") or
......
...@@ -2,6 +2,7 @@ package com.base.easyfilemanager.helps ...@@ -2,6 +2,7 @@ package com.base.easyfilemanager.helps
import android.app.Dialog import android.app.Dialog
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
...@@ -12,7 +13,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -12,7 +13,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
protected abstract val binding: T protected abstract val binding: T
protected open val isLightMode: Boolean? = null
lateinit var launcher: ActivityLauncher lateinit var launcher: ActivityLauncher
...@@ -20,9 +21,6 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -20,9 +21,6 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
launcher = ActivityLauncher(this) launcher = ActivityLauncher(this)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(binding.root) setContentView(binding.root)
isLightMode?.let {
BarUtils.setStatusBarLightMode(this, it)
}
initView() initView()
initListener() initListener()
......
...@@ -82,10 +82,7 @@ object MediaStoreEx { ...@@ -82,10 +82,7 @@ object MediaStoreEx {
val projection = arrayOf( val projection = arrayOf(
MediaStore.Audio.Media._ID, MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.SIZE MediaStore.Audio.Media.SIZE
) )
var cursor: Cursor? = null var cursor: Cursor? = null
...@@ -102,8 +99,6 @@ object MediaStoreEx { ...@@ -102,8 +99,6 @@ object MediaStoreEx {
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
// 获取音乐文件的属性 // 获取音乐文件的属性
val title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)) val title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE))
val artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST))
val album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM))
val path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)) val path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA))
val size = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)).toLong() val size = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)).toLong()
// 其他属性... // 其他属性...
...@@ -123,8 +118,6 @@ object MediaStoreEx { ...@@ -123,8 +118,6 @@ object MediaStoreEx {
val projection = arrayOf( val projection = arrayOf(
MediaStore.Images.Media._ID, MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATA,
MediaStore.Images.Media.TITLE,
MediaStore.Images.Media.MIME_TYPE,
MediaStore.Images.Media.SIZE, MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DATE_TAKEN MediaStore.Images.Media.DATE_TAKEN
) )
...@@ -165,7 +158,6 @@ object MediaStoreEx { ...@@ -165,7 +158,6 @@ object MediaStoreEx {
MediaStore.Video.Media.DATA, MediaStore.Video.Media.DATA,
MediaStore.Video.Media.TITLE, MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.MIME_TYPE, MediaStore.Video.Media.MIME_TYPE,
MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.DATE_TAKEN, MediaStore.Video.Media.DATE_TAKEN,
MediaStore.Video.Media.SIZE, MediaStore.Video.Media.SIZE,
) )
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="2.5dp" />
<solid android:color="#EBEBEB" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="2.5dp" />
<solid android:color="#07BC36" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="2.5dp" />
<solid android:color="#FF3B28" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="2.5dp" />
<solid android:color="#FF9517" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="vertical"
android:drawable="@drawable/battery_bg_lv"
android:gravity="bottom">
</clip>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="vertical"
android:drawable="@drawable/battery_bg_red"
android:gravity="bottom">
</clip>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="vertical"
android:drawable="@drawable/battery_bg_yellow"
android:gravity="bottom">
</clip>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#4772FF" />
<corners android:radius="25dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.BatteryActivity">
<View
android:layout_width="match_parent"
android:layout_height="50dp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Battery info"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_battery"
android:layout_width="72dp"
android:layout_height="118dp"
android:layout_gravity="center"
android:layout_marginTop="48dp"
android:background="@mipmap/battery_lv">
<ImageView
android:layout_width="51dp"
android:layout_height="90dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="17dp"
android:src="@drawable/battery_bg"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_battery_clip"
android:layout_width="51dp"
android:layout_height="90dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="17dp"
android:src="@drawable/battery_clip_lv"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_chongdian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@mipmap/chongdian" />
</FrameLayout>
<TextView
android:id="@+id/tv_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="26dp"
android:textSize="33sp"
android:textStyle="bold"
tools:text="100%" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="13dp"
android:text="Remaining battery"
android:textColor="#666666"
android:textSize="17sp" />
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="115dp"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="24dp"
app:cardBackgroundColor="#FAFAFB"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/temperature" />
<TextView
android:id="@+id/tv_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="6.5dp"
tools:text="37.5℃" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="11dp"
android:text="Temperature" />
</LinearLayout>
<View
android:layout_width="1px"
android:layout_height="60dp"
android:layout_gravity="center_vertical"
android:background="#EEEEEE" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/voltage" />
<TextView
android:id="@+id/tv_voltage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="6.5dp"
tools:text="37.5℃" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="11dp"
android:text="Temperature" />
</LinearLayout>
<View
android:layout_width="1px"
android:layout_height="60dp"
android:layout_gravity="center_vertical"
android:background="#EEEEEE" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/power" />
<TextView
android:id="@+id/tv_power"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="6.5dp"
tools:text="660mAh" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="11dp"
android:text="Power" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<FrameLayout
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="31dp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/tv_got_it"
android:layout_width="289dp"
android:layout_height="50dp"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="30dp"
android:background="@drawable/bg_4772ff_corners25"
android:gravity="center"
android:text="Got it"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold" />
</FrameLayout>
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment