Commit dca3023c authored by songjianyu's avatar songjianyu

[新增] 电池的常驻通知功能

parent fb356b23
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
android:name=".ui.main.MainActivity" android:name=".ui.main.MainActivity"
android:exported="true" android:exported="true"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:launchMode="singleTask"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".ui.guide.GuideActivity" android:name=".ui.guide.GuideActivity"
......
...@@ -148,6 +148,7 @@ abstract class BaseActivity<VB : ViewBinding>( ...@@ -148,6 +148,7 @@ abstract class BaseActivity<VB : ViewBinding>(
val intent = Intent(this, MainActivity::class.java) val intent = Intent(this, MainActivity::class.java)
intent.putExtra("where", "finishToMainTop") intent.putExtra("where", "finishToMainTop")
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK )
startActivity(intent) startActivity(intent)
} }
...@@ -401,10 +402,12 @@ abstract class BaseActivity<VB : ViewBinding>( ...@@ -401,10 +402,12 @@ abstract class BaseActivity<VB : ViewBinding>(
if (AdConfigBean.adsConfigBean.functionBackShowAd) { if (AdConfigBean.adsConfigBean.functionBackShowAd) {
AdsMgr.showInsert(this, showCallBack = object : AdsShowCallBack() { AdsMgr.showInsert(this, showCallBack = object : AdsShowCallBack() {
override fun next() { override fun next() {
finish()
finishToMainTop() finishToMainTop()
} }
}) })
} else { } else {
finish()
finishToMainTop() finishToMainTop()
} }
} }
......
package com.base.appzxhy.business.service
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.Icon
import android.os.Build
import android.widget.RemoteViews
import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat
import com.base.appzxhy.R
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.ui.batteryinfo.BatteryReceiver
import com.base.appzxhy.ui.main.MainActivity
import com.base.appzxhy.ui.splash.SplashActivity
import kotlin.math.roundToInt
import kotlin.random.Random
object BatteryNotification {
private fun customRemoteViews(
context: Context,
contentView: RemoteViews,
expendView: RemoteViews,
) {
val requestCode = Random.nextInt(1800)
val intent = Intent(context, SplashActivity::class.java).apply {
putExtra("actionId", BATTERY_INFO)
}
val pendingIntent =
PendingIntent.getActivity(
context,
requestCode,
intent,
PendingIntent.FLAG_IMMUTABLE
)
contentView.setOnClickPendingIntent(R.id.tv_open, pendingIntent)
expendView.setOnClickPendingIntent(R.id.tv_open, pendingIntent)
//set view
val percent = BatteryReceiver.level / BatteryReceiver.scale.toFloat()
val power ="${(percent * 100).roundToInt()}%"
val remainingCapacity = BatteryReceiver.mAh * percent
val wTime = (remainingCapacity / 3.0f).toInt()
if (BatteryReceiver.isCharging) {
//充电
contentView.setTextColor(R.id.tv_status,Color.parseColor("#00E961"))
contentView.setTextViewText(R.id.tv_status, "Charging")
contentView.setTextColor(R.id.tv_power, Color.parseColor("#00E961"))
contentView.setTextViewText(R.id.tv_power, power)
expendView.setImageViewResource(
R.id.iv_battery,
R.drawable.remote_view_battery_charging
)
expendView.setTextColor(R.id.tv_status, Color.parseColor("#00E961"))
expendView.setTextViewText(R.id.tv_status, "Charging")
expendView.setTextColor(R.id.tv_power, Color.parseColor("#00E961"))
expendView.setTextViewText(R.id.tv_power, power)
return
}
if (percent > 0.5) {
contentView.setTextColor(R.id.tv_status, Color.parseColor("#00E961"))
contentView.setTextViewText(R.id.tv_status, "${wTime / 60}h ${wTime % 60}m")
contentView.setTextColor(R.id.tv_power, Color.parseColor("#00E961"))
contentView.setTextViewText(R.id.tv_power, power)
expendView.setImageViewResource(R.id.iv_battery, R.drawable.remote_view_battery_full)
expendView.setTextColor(R.id.tv_status, Color.parseColor("#00E961"))
expendView.setTextViewText(R.id.tv_status, "${wTime / 60}h ${wTime % 60}m")
expendView.setTextColor(R.id.tv_power, Color.parseColor("#00E961"))
expendView.setTextViewText(R.id.tv_power, power)
} else {
contentView.setTextColor(R.id.tv_status, Color.parseColor("#FF2C2C"))
contentView.setTextViewText(R.id.tv_status, "Low")
contentView.setTextColor(R.id.tv_power, Color.parseColor("#FF2C2C"))
contentView.setTextViewText(R.id.tv_power, power)
expendView.setImageViewResource(R.id.iv_battery, R.drawable.remote_view_battery_low)
expendView.setTextColor(R.id.tv_status, Color.parseColor("#FF2C2C"))
expendView.setTextViewText(R.id.tv_status, "Low")
expendView.setTextColor(R.id.tv_power, Color.parseColor("#FF2C2C"))
expendView.setTextViewText(R.id.tv_power, power)
}
}
fun createBatteryNotification(context: Context): Notification {
val channelName = "Permanent Foreground Service Channel"
val channelId = "permanent_channel"
val contentView = RemoteViews(context.packageName, R.layout.layout_battery_stay_small)
val expendView = RemoteViews(context.packageName, R.layout.layout_battery_stay_large)
customRemoteViews(context, contentView, expendView)
val builder = NotificationCompat.Builder(context, channelId)
val smallIcon = IconCompat.createFromIcon(
context, Icon.createWithResource(
context, R.mipmap.ic_launcher
)
)
smallIcon?.let {
builder.setSmallIcon(smallIcon) //设置状态栏内的小图标
}
val nfIntent = Intent(context, MainActivity::class.java)
val pendingIntent =
PendingIntent.getActivity(context, 0, nfIntent, PendingIntent.FLAG_IMMUTABLE)
builder.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
builder.setContentTitle(context.resources.getString(R.string.app_name))
builder.setContentIntent(pendingIntent) //设置PendingIntent
builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE) //设置通知公开可见
builder.setAutoCancel(false)
builder.setOngoing(true)
builder.setPriority(NotificationCompat.PRIORITY_MAX) //优先级为:重要通知
builder.setWhen(System.currentTimeMillis())
builder.setCustomContentView(contentView)
builder.setCustomBigContentView(expendView)
builder.setCustomHeadsUpContentView(expendView)
builder.setNumber(0)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel =
NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_LOW)
channel.lockscreenVisibility = 1
channel.setShowBadge(false)
val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
builder.setChannelId(channelId)
}
return builder.build()
}
}
\ No newline at end of file
...@@ -63,14 +63,22 @@ class StayJobService : JobService() { ...@@ -63,14 +63,22 @@ class StayJobService : JobService() {
private fun startForeground() { private fun startForeground() {
try { try {
val notification = createPermanentNotification(applicationContext) val notification = createPermanentNotification(applicationContext)
val batteryNotification =
BatteryNotification.createBatteryNotification(applicationContext)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
startForeground( startForeground(
NOTIFICATION_STAY_ID, NOTIFICATION_STAY_ID,
notification, notification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
) )
startForeground(
NOTIFICATION_STAY_ID + 1,
batteryNotification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
)
} else { } else {
startForeground(NOTIFICATION_STAY_ID, notification) startForeground(NOTIFICATION_STAY_ID, notification)
startForeground(NOTIFICATION_STAY_ID + 1, batteryNotification)
} }
isRunning = true isRunning = true
EventUtils.event("startForeground") EventUtils.event("startForeground")
...@@ -85,7 +93,14 @@ class StayJobService : JobService() { ...@@ -85,7 +93,14 @@ class StayJobService : JobService() {
val notificationManager = val notificationManager =
getSystemService(NOTIFICATION_SERVICE) as NotificationManager getSystemService(NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(NOTIFICATION_STAY_ID, createPermanentNotification(applicationContext)) notificationManager.notify(
NOTIFICATION_STAY_ID,
createPermanentNotification(applicationContext)
)
notificationManager.notify(
NOTIFICATION_STAY_ID + 1,
BatteryNotification.createBatteryNotification(applicationContext)
)
} }
override fun onDestroy() { override fun onDestroy() {
...@@ -114,7 +129,8 @@ class StayJobService : JobService() { ...@@ -114,7 +129,8 @@ class StayJobService : JobService() {
return false return false
} }
val millisInFuture = if (BuildConfig.DEBUG) 5000L else PopupConfigBean.popupConfigBean.notifyForegroundInterval val millisInFuture =
if (BuildConfig.DEBUG) 5000L else PopupConfigBean.popupConfigBean.notifyForegroundInterval
private inner class Timer() : CountDownTimer(millisInFuture, 1000) { private inner class Timer() : CountDownTimer(millisInFuture, 1000) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
......
...@@ -34,6 +34,7 @@ class BatteryInfoActivity : ...@@ -34,6 +34,7 @@ class BatteryInfoActivity :
} }
override fun initView() { override fun initView() {
super.initView()
setStatusBarColor(getColor(R.color.colorPrimary)) setStatusBarColor(getColor(R.color.colorPrimary))
showAdAnimation(LottieEnum.BATTERY_INFO_LOTTIE) { showAdAnimation(LottieEnum.BATTERY_INFO_LOTTIE) {
adAdapter.submitList(listOf("")) adAdapter.submitList(listOf(""))
......
...@@ -13,6 +13,7 @@ import com.base.appzxhy.ui.largefile.LargeFileCleanActivity ...@@ -13,6 +13,7 @@ import com.base.appzxhy.ui.largefile.LargeFileCleanActivity
import com.base.appzxhy.ui.photocompression.PhotoCompressionActivity import com.base.appzxhy.ui.photocompression.PhotoCompressionActivity
import com.base.appzxhy.ui.screenshot.ScreenshotCleanActivity import com.base.appzxhy.ui.screenshot.ScreenshotCleanActivity
import com.base.appzxhy.ui.similar.SimilarPhotosActivity import com.base.appzxhy.ui.similar.SimilarPhotosActivity
import com.base.appzxhy.ui.videoclean.VideoCleanActivity
class FunctionBackDialog( class FunctionBackDialog(
val activity: Activity val activity: Activity
...@@ -63,6 +64,10 @@ class FunctionBackDialog( ...@@ -63,6 +64,10 @@ class FunctionBackDialog(
binding.tvTitle.text = activity.getString(R.string.exit_screenshot_cleaner) binding.tvTitle.text = activity.getString(R.string.exit_screenshot_cleaner)
binding.tvContent.text = activity.getString(R.string.exit_screenshot_cleaner_content) binding.tvContent.text = activity.getString(R.string.exit_screenshot_cleaner_content)
} }
is VideoCleanActivity->{
binding.tvTitle.text = activity.getString(R.string.Exit_Video_Clean)
binding.tvContent.text = activity.getString(R.string.Exit_Video_Clean_Content)
}
else -> { else -> {
back.invoke() back.invoke()
......
...@@ -254,9 +254,9 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ ...@@ -254,9 +254,9 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ
binding.ivType.isSelected = false binding.ivType.isSelected = false
binding.ivSize.isSelected = false binding.ivSize.isSelected = false
binding.ivTime.isSelected = false binding.ivTime.isSelected = false
binding.tvType.setTextColor(getColor(R.color.color_181b1f)) binding.tvType.setTextColor(getColor(R.color.fontsBlack))
binding.tvSize.setTextColor(getColor(R.color.color_181b1f)) binding.tvSize.setTextColor(getColor(R.color.fontsBlack))
binding.tvTime.setTextColor(getColor(R.color.color_181b1f)) binding.tvTime.setTextColor(getColor(R.color.fontsBlack))
binding.ivTypeArrow.setImageResource(R.drawable.icon_jiantou_down_small) binding.ivTypeArrow.setImageResource(R.drawable.icon_jiantou_down_small)
binding.ivSizeArrow.setImageResource(R.drawable.icon_jiantou_down_small) binding.ivSizeArrow.setImageResource(R.drawable.icon_jiantou_down_small)
binding.ivTimeArrow.setImageResource(R.drawable.icon_jiantou_down_small) binding.ivTimeArrow.setImageResource(R.drawable.icon_jiantou_down_small)
......
...@@ -242,7 +242,7 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit ...@@ -242,7 +242,7 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
binding.llTitle.tvTitle.setOnClickListener { onBackPressedDispatcher.onBackPressed() } binding.llTitle.ivBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() }
binding.ivSelect.setOnClickListener { binding.ivSelect.setOnClickListener {
it.isSelected = !it.isSelected it.isSelected = !it.isSelected
setSelectAll(it.isSelected) setSelectAll(it.isSelected)
......
...@@ -128,10 +128,6 @@ class VideoCleanActivity : ...@@ -128,10 +128,6 @@ class VideoCleanActivity :
} }
} }
override fun handleBackCallBack() {
super.handleBackCallBack()
}
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
private fun initData() { private fun initData() {
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
...@@ -176,15 +172,4 @@ class VideoCleanActivity : ...@@ -176,15 +172,4 @@ class VideoCleanActivity :
dialog.showDialog("delete") dialog.showDialog("delete")
} }
} }
internal class MediaImageSpanLookup(
private val spanCount: Int,
private val expandableAdapter: ExpandableAdapter<*>,
) :
GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
val viewType = expandableAdapter.getItemViewType(position)
return if (expandableAdapter.isGroup(viewType)) spanCount else 1
}
}
} }
\ No newline at end of file
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp" android:layout_marginHorizontal="2dp"
android:text="@string/all_types" android:text="@string/all_types"
android:textColor="@color/color_181b1f" android:textColor="@color/fontsBlack"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" /> android:textStyle="bold" />
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp" android:layout_marginHorizontal="2dp"
android:text="@string/mb_10" android:text="@string/mb_10"
android:textColor="@color/color_181b1f" android:textColor="@color/fontsBlack"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" /> android:textStyle="bold" />
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp" android:layout_marginHorizontal="2dp"
android:text="@string/all_time" android:text="@string/all_time"
android:textColor="@color/color_181b1f" android:textColor="@color/fontsBlack"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" /> android:textStyle="bold" />
......
...@@ -12,36 +12,9 @@ ...@@ -12,36 +12,9 @@
android:background="@color/colorPrimary" android:background="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<include layout="@layout/layout_title" <include
android:id="@+id/ll_title" android:id="@+id/ll_title"
layout="@layout/layout_title" />
/>
<!-- <FrameLayout-->
<!-- android:id="@+id/ll_title"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:gravity="center_vertical"-->
<!-- android:orientation="horizontal"-->
<!-- app:layout_constraintTop_toTopOf="parent">-->
<!-- <androidx.appcompat.widget.AppCompatImageView-->
<!-- android:id="@+id/ivBack"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:padding="16dp"-->
<!-- android:src="@drawable/icon_back" />-->
<!-- <androidx.appcompat.widget.AppCompatTextView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_gravity="start|center_vertical"-->
<!-- android:layout_marginStart="53dp"-->
<!-- android:text="@string/Video_Clean"-->
<!-- android:textColor="@color/white"-->
<!-- android:textSize="20sp"-->
<!-- android:textStyle="bold" />-->
<!-- </FrameLayout>-->
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_size" android:id="@+id/cl_size"
...@@ -112,9 +85,9 @@ ...@@ -112,9 +85,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/white" android:background="@color/white"
android:paddingHorizontal="12dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:paddingHorizontal="12dp"
app:layout_constraintBottom_toTopOf="@id/ll_bottom" app:layout_constraintBottom_toTopOf="@id/ll_bottom"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
......
<?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:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="28dp">
<ImageView
android:id="@+id/iv_battery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="25dp"
tools:src="@drawable/icon_battery" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#00E961"
android:textSize="@dimen/sp_20"
android:textStyle="bold"
android:text="Changer" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Battery"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<ImageView
android:id="@+id/view"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginHorizontal="30dp"
android:background="#CCCCCC"
app:layout_constraintEnd_toStartOf="@id/tv_power"
app:layout_constraintStart_toEndOf="@id/tv_status" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/tv_power"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#00E961"
android:textSize="@dimen/sp_20"
android:textStyle="bold"
android:text="12%" />
<TextView
android:id="@+id/tv_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Power"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_open"
android:layout_width="match_parent"
android:layout_height="41dp"
android:background="@drawable/bg_primary_r64"
android:gravity="center"
android:text="@string/View"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/tv_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_power" />
</LinearLayout>
<?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:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#00E961"
android:textSize="@dimen/sp_20"
android:textStyle="bold"
android:text="Changer" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Battery"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<ImageView
android:id="@+id/view"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginHorizontal="20dp"
android:background="#CCCCCC"
app:layout_constraintEnd_toStartOf="@id/tv_power"
app:layout_constraintStart_toEndOf="@id/tv_status" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/tv_power"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#00E961"
android:textSize="@dimen/sp_20"
android:textStyle="bold"
android:text="12%" />
<TextView
android:id="@+id/tv_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Power"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="0dp"
/>
<TextView
android:id="@+id/tv_open"
android:layout_width="60dp"
android:layout_height="29dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="20dp"
android:background="@drawable/bg_primary_r64"
android:gravity="center"
android:text="@string/View"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
android:textStyle="bold"
android:layout_marginEnd="20dp"
app:layout_constraintBottom_toBottomOf="@id/tv_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_power" />
</LinearLayout>
\ No newline at end of file
...@@ -149,4 +149,6 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -149,4 +149,6 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="Battery">Battery</string> <string name="Battery">Battery</string>
<string name="Large_File">Large File</string> <string name="Large_File">Large File</string>
<string name="Screenshot">Screenshot</string> <string name="Screenshot">Screenshot</string>
<string name="Exit_Video_Clean">Exit_Video_Clean</string>
<string name="Exit_Video_Clean_Content">>Exit Video Clean? Undeleted video might be using space</string>
</resources> </resources>
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