From 8227c65176865e20d5b5f942a2f1807f3c0e0cfb Mon Sep 17 00:00:00 2001 From: Ganesh K Date: Mon, 21 Dec 2020 11:25:39 +0530 Subject: [PATCH 1/2] androidX conversion --- .idea/codeStyles/Project.xml | 16 ++ .idea/compiler.xml | 6 + .idea/gradle.xml | 3 + .idea/jarRepositories.xml | 30 +++ .idea/misc.xml | 2 +- app/build.gradle | 26 +-- app/src/main/AndroidManifest.xml | 4 +- .../java/com/obs/marveleditor/MainActivity.kt | 2 +- .../com/obs/marveleditor/OptiSplashScreen.kt | 2 +- .../obs/marveleditor/OptiTrimmerActivity.java | 4 +- .../adapter/OptiClipArtAdapter.kt | 5 +- .../marveleditor/adapter/OptiFilterAdapter.kt | 7 +- .../adapter/OptiPlaybackSpeedAdapter.kt | 5 +- .../adapter/OptiPositionAdapter.kt | 5 +- .../adapter/OptiTransitionAdapter.kt | 5 +- .../adapter/OptiVideoOptionsAdapter.kt | 5 +- .../fragments/OptiAddClipArtFragment.kt | 11 +- .../fragments/OptiAddMusicFragment.kt | 64 +++--- .../fragments/OptiAddTextFragment.kt | 14 +- .../OptiBaseCreatorDialogFragment.kt | 6 +- .../fragments/OptiFilterFragment.kt | 11 +- .../fragments/OptiMasterProcessorFragment.kt | 98 +++++---- .../fragments/OptiMergeFragment.kt | 10 +- .../OptiPlaybackSpeedDialogFragment.kt | 11 +- .../fragments/OptiTransitionFragment.kt | 11 +- .../fragments/OptiTrimFragment.kt | 22 +- .../fragments/OptiVideoOptionFragment.kt | 13 +- .../utils/OptiCustomRangeSeekBar.java | 6 +- .../com/obs/marveleditor/utils/OptiUtils.kt | 12 +- .../obs/marveleditor/utils/OptiVideoUtils.kt | 6 +- .../videoTrimmer/OptiHgLVideoTrimmer.java | 21 +- .../videoTrimmer/utils/OptiFileUtils.java | 3 +- .../view/OptiProgressBarView.java | 5 +- .../view/OptiRangeSeekBarView.java | 6 +- .../videoTrimmer/view/OptiThumb.java | 5 +- .../videoTrimmer/view/OptiTimeLineView.java | 5 +- .../main/res/drawable-hdpi/ic_settings.png | Bin 0 -> 1678 bytes .../main/res/drawable-xhdpi/ic_settings.png | Bin 0 -> 2222 bytes .../main/res/drawable-xxhdpi/ic_settings.png | Bin 0 -> 3150 bytes .../main/res/drawable-xxxhdpi/ic_settings.png | Bin 0 -> 4368 bytes .../drawable/curve_shape_background_black.xml | 18 ++ app/src/main/res/drawable/ic_hide.xml | 16 ++ .../main/res/drawable/ic_video_cutline.png | Bin 0 -> 1303 bytes app/src/main/res/drawable/rounded_corners.xml | 12 ++ app/src/main/res/layout/activity_main.xml | 10 +- .../res/layout/exo_playback_control_view.xml | 85 ++++++++ .../main/res/layout/opti_activity_trimmer.xml | 3 +- .../res/layout/opti_add_music_includer.xml | 7 +- .../res/layout/opti_add_video_includer.xml | 7 +- app/src/main/res/layout/opti_clipart_view.xml | 17 +- app/src/main/res/layout/opti_filter_view.xml | 27 ++- .../res/layout/opti_fragment_add_clip_art.xml | 24 +-- .../layout/opti_fragment_add_music_dialog.xml | 54 +++-- .../res/layout/opti_fragment_add_text.xml | 27 ++- .../layout/opti_fragment_add_video_dialog.xml | 28 ++- .../layout/opti_fragment_filter_dialog.xml | 20 +- .../res/layout/opti_fragment_merge_dialog.xml | 68 +++--- .../opti_fragment_playback_speed_dialog.xml | 20 +- .../res/layout/opti_fragment_transition.xml | 20 +- .../main/res/layout/opti_fragment_trim.xml | 29 ++- .../layout/opti_layout_custom_exo_player.xml | 29 ++- app/src/main/res/layout/opti_option_view.xml | 19 +- .../main/res/layout/opti_option_view_land.xml | 19 +- .../main/res/layout/opti_playback_view.xml | 17 +- .../main/res/layout/opti_splash_screen.xml | 12 +- .../layout/opti_video_processor_fragment.xml | 42 ++-- .../main/res/layout/opti_view_time_line.xml | 195 +++++++++--------- app/src/main/res/layout/opti_view_top_bar.xml | 27 ++- build.gradle | 25 ++- gradle.properties | 33 ++- gradle/wrapper/gradle-wrapper.properties | 2 +- 71 files changed, 803 insertions(+), 576 deletions(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 app/src/main/res/drawable-hdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_settings.png create mode 100644 app/src/main/res/drawable/curve_shape_background_black.xml create mode 100644 app/src/main/res/drawable/ic_hide.xml create mode 100644 app/src/main/res/drawable/ic_video_cutline.png create mode 100644 app/src/main/res/drawable/rounded_corners.xml create mode 100644 app/src/main/res/layout/exo_playback_control_view.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 1bec35e..31d977a 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,6 +1,22 @@ + + diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 7ac24c7..9bba60d 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,8 +1,10 @@ + diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..eb2873e --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 7bfef59..d5d35ec 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 80ad4d5..44793d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,14 +10,14 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion compileSdk + compileSdkVersion 30 defaultConfig { applicationId "com.obs.marveleditor" - minSdkVersion minSdk + minSdkVersion 21 targetSdkVersion targetSdk versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { release { @@ -36,14 +36,16 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlinVersion}" - implementation "com.android.support:appcompat-v7:${appCompat}" - implementation "com.android.support.constraint:constraint-layout:${constraint}" - implementation "com.android.support:design:${appCompat}" + implementation "androidx.appcompat:appcompat:${appCompat}" + implementation "androidx.constraintlayout:constraintlayout:${constraint}" + implementation "androidx.cardview:cardview:${cardView}" + implementation 'com.google.android.material:material:1.2.1' //exoplayer - implementation "com.google.android.exoplayer:exoplayer-core:${exoPlayerCore}" - implementation "com.google.android.exoplayer:exoplayer-dash:${exoPlayer}" - implementation "com.google.android.exoplayer:exoplayer-ui:${exoPlayer}" + implementation "com.google.android.exoplayer:exoplayer:${exoPlayer}" + + // RecyclerView + implementation "androidx.recyclerview:recyclerview:${recyclerView}" //ffmpeg implementation "com.writingminds:FFmpegAndroid:${FFmpeg}" @@ -61,7 +63,7 @@ dependencies { //fresco implementation "com.facebook.fresco:fresco:${fresco}" - testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + testImplementation 'junit:junit:4.13.1' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fbb67fb..c85d2a7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,8 @@ tools:node="replace"/> + + diff --git a/app/src/main/java/com/obs/marveleditor/MainActivity.kt b/app/src/main/java/com/obs/marveleditor/MainActivity.kt index f3b0356..3ac3558 100644 --- a/app/src/main/java/com/obs/marveleditor/MainActivity.kt +++ b/app/src/main/java/com/obs/marveleditor/MainActivity.kt @@ -8,7 +8,7 @@ package com.obs.marveleditor import android.os.Bundle -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity import com.facebook.drawee.backends.pipeline.Fresco import com.obs.marveleditor.fragments.OptiMasterProcessorFragment diff --git a/app/src/main/java/com/obs/marveleditor/OptiSplashScreen.kt b/app/src/main/java/com/obs/marveleditor/OptiSplashScreen.kt index d4608c2..b08a989 100644 --- a/app/src/main/java/com/obs/marveleditor/OptiSplashScreen.kt +++ b/app/src/main/java/com/obs/marveleditor/OptiSplashScreen.kt @@ -10,7 +10,7 @@ package com.obs.marveleditor import android.content.Intent import android.os.Bundle import android.os.Handler -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity class OptiSplashScreen : AppCompatActivity() { diff --git a/app/src/main/java/com/obs/marveleditor/OptiTrimmerActivity.java b/app/src/main/java/com/obs/marveleditor/OptiTrimmerActivity.java index f6bff94..4fbb2c4 100644 --- a/app/src/main/java/com/obs/marveleditor/OptiTrimmerActivity.java +++ b/app/src/main/java/com/obs/marveleditor/OptiTrimmerActivity.java @@ -11,8 +11,10 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.util.Log; + +import androidx.appcompat.app.AppCompatActivity; + import com.obs.marveleditor.videoTrimmer.OptiHgLVideoTrimmer; import com.obs.marveleditor.videoTrimmer.interfaces.OptiOnHgLVideoListener; import com.obs.marveleditor.videoTrimmer.interfaces.OptiOnTrimVideoListener; diff --git a/app/src/main/java/com/obs/marveleditor/adapter/OptiClipArtAdapter.kt b/app/src/main/java/com/obs/marveleditor/adapter/OptiClipArtAdapter.kt index 38e814f..413e079 100644 --- a/app/src/main/java/com/obs/marveleditor/adapter/OptiClipArtAdapter.kt +++ b/app/src/main/java/com/obs/marveleditor/adapter/OptiClipArtAdapter.kt @@ -10,12 +10,13 @@ package com.obs.marveleditor.adapter import android.content.Context import android.graphics.Color import android.net.Uri -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.RecyclerView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiClipArtListener import java.io.File @@ -64,6 +65,6 @@ class OptiClipArtAdapter(clipArtList: ArrayList, val context: Context, o } class MyPostViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var tvClipArt: ImageView = itemView.findViewById(R.id.tv_clip_art) + var tvClipArt: AppCompatImageView = itemView.findViewById(R.id.tv_clip_art) } } \ No newline at end of file diff --git a/app/src/main/java/com/obs/marveleditor/adapter/OptiFilterAdapter.kt b/app/src/main/java/com/obs/marveleditor/adapter/OptiFilterAdapter.kt index 426f0db..5a0f118 100644 --- a/app/src/main/java/com/obs/marveleditor/adapter/OptiFilterAdapter.kt +++ b/app/src/main/java/com/obs/marveleditor/adapter/OptiFilterAdapter.kt @@ -10,13 +10,14 @@ package com.obs.marveleditor.adapter import android.content.Context import android.graphics.Bitmap import android.graphics.Color -import android.support.constraint.ConstraintLayout -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.appcompat.widget.AppCompatTextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.RecyclerView import com.facebook.drawee.view.SimpleDraweeView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiFilterListener @@ -64,7 +65,7 @@ class OptiFilterAdapter(filterList: ArrayList, bitmap: Bitmap, val conte } class MyPostViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var tvFilter: TextView = itemView.findViewById(R.id.tvFilter) + var tvFilter: AppCompatTextView = itemView.findViewById(R.id.tvFilter) var ivFilter: SimpleDraweeView = itemView.findViewById(R.id.ivFilter) var clFilter: ConstraintLayout = itemView.findViewById(R.id.clFilter) } diff --git a/app/src/main/java/com/obs/marveleditor/adapter/OptiPlaybackSpeedAdapter.kt b/app/src/main/java/com/obs/marveleditor/adapter/OptiPlaybackSpeedAdapter.kt index 3112094..5085bbf 100644 --- a/app/src/main/java/com/obs/marveleditor/adapter/OptiPlaybackSpeedAdapter.kt +++ b/app/src/main/java/com/obs/marveleditor/adapter/OptiPlaybackSpeedAdapter.kt @@ -9,12 +9,13 @@ package com.obs.marveleditor.adapter import android.content.Context import android.graphics.Color -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.appcompat.widget.AppCompatTextView +import androidx.recyclerview.widget.RecyclerView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiPlaybackSpeedListener import com.obs.marveleditor.utils.OptiConstant @@ -95,6 +96,6 @@ class OptiPlaybackSpeedAdapter(private val playbackList: ArrayList, val } class MyPostViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var tvSpeed: TextView = itemView.findViewById(R.id.tv_speed) + var tvSpeed: AppCompatTextView = itemView.findViewById(R.id.tv_speed) } } \ No newline at end of file diff --git a/app/src/main/java/com/obs/marveleditor/adapter/OptiPositionAdapter.kt b/app/src/main/java/com/obs/marveleditor/adapter/OptiPositionAdapter.kt index 323d1c0..0a89541 100644 --- a/app/src/main/java/com/obs/marveleditor/adapter/OptiPositionAdapter.kt +++ b/app/src/main/java/com/obs/marveleditor/adapter/OptiPositionAdapter.kt @@ -9,12 +9,13 @@ package com.obs.marveleditor.adapter import android.content.Context import android.graphics.Color -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.appcompat.widget.AppCompatTextView +import androidx.recyclerview.widget.RecyclerView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiPositionListener @@ -63,6 +64,6 @@ class OptiPositionAdapter(positionList: ArrayList, val context: Context, } class MyPostViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var tvSpeed: TextView = itemView.findViewById(R.id.tv_speed) + var tvSpeed: AppCompatTextView = itemView.findViewById(R.id.tv_speed) } } \ No newline at end of file diff --git a/app/src/main/java/com/obs/marveleditor/adapter/OptiTransitionAdapter.kt b/app/src/main/java/com/obs/marveleditor/adapter/OptiTransitionAdapter.kt index 13be594..1ee0d43 100644 --- a/app/src/main/java/com/obs/marveleditor/adapter/OptiTransitionAdapter.kt +++ b/app/src/main/java/com/obs/marveleditor/adapter/OptiTransitionAdapter.kt @@ -9,12 +9,13 @@ package com.obs.marveleditor.adapter import android.content.Context import android.graphics.Color -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.appcompat.widget.AppCompatTextView +import androidx.recyclerview.widget.RecyclerView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiFilterListener @@ -58,7 +59,7 @@ class OptiTransitionAdapter (transitionList: ArrayList, val context: Con } class MyPostViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var tvSpeed: TextView = itemView.findViewById(R.id.tv_speed) + var tvSpeed: AppCompatTextView = itemView.findViewById(R.id.tv_speed) } override fun getItemCount(): Int { diff --git a/app/src/main/java/com/obs/marveleditor/adapter/OptiVideoOptionsAdapter.kt b/app/src/main/java/com/obs/marveleditor/adapter/OptiVideoOptionsAdapter.kt index 9b1b0a8..1f2874d 100644 --- a/app/src/main/java/com/obs/marveleditor/adapter/OptiVideoOptionsAdapter.kt +++ b/app/src/main/java/com/obs/marveleditor/adapter/OptiVideoOptionsAdapter.kt @@ -8,11 +8,12 @@ package com.obs.marveleditor.adapter import android.content.Context -import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.RecyclerView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiVideoOptionListener import com.obs.marveleditor.utils.OptiConstant @@ -75,7 +76,7 @@ class OptiVideoOptionsAdapter(videoOptions: ArrayList, val context: Cont } class MyPostViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - var ivOption: ImageView = itemView.findViewById(R.id.iv_option) + var ivOption: AppCompatImageView = itemView.findViewById(R.id.iv_option) } override fun getItemCount(): Int { diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiAddClipArtFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiAddClipArtFragment.kt index d6be063..829694f 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiAddClipArtFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiAddClipArtFragment.kt @@ -10,15 +10,16 @@ package com.obs.marveleditor.fragments import android.content.Context import android.os.Bundle import android.os.Environment -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.utils.OptiConstant import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.R @@ -39,8 +40,8 @@ class OptiAddClipArtFragment : BottomSheetDialogFragment(), OptiClipArtListener, private lateinit var linearLayoutManagerTwo: LinearLayoutManager private lateinit var rvClipArt: RecyclerView private lateinit var rvPosition: RecyclerView - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private var videoFile: File? = null private var clipArtFilePath: ArrayList = ArrayList() private var positionList: ArrayList = ArrayList() diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiAddMusicFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiAddMusicFragment.kt index 5cc4049..b15a79a 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiAddMusicFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiAddMusicFragment.kt @@ -17,15 +17,15 @@ import android.net.Uri import android.os.Bundle import android.provider.MediaStore import android.provider.Settings -import android.support.v4.app.ActivityCompat -import android.support.v7.widget.AppCompatButton -import android.support.v7.widget.AppCompatImageView -import android.support.v7.widget.AppCompatTextView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.* +import androidx.appcompat.widget.AppCompatButton +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.app.ActivityCompat import com.obs.marveleditor.utils.OptiConstant import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiFFMpegCallback @@ -66,10 +66,10 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper private var durationSet: Boolean = false private var flLoadingView: FrameLayout? = null private var pbLoading: ProgressBar? = null - private var tvSelectedAudio: TextView? = null - private var ivRadio: ImageView? = null + private var tvSelectedAudio: AppCompatTextView? = null + private var ivRadio: AppCompatImageView? = null private var masterAudioFile: File? = null - private var tvSubTitle: TextView? = null + private var tvSubTitle: AppCompatTextView? = null private var nextAction: Int = 1 private var seekToValue: Long = 0L private var minSeekValue: Float = 0F @@ -103,7 +103,7 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper mContext = context acivClose?.setOnClickListener { - dialog.dismiss() + dialog?.dismiss() helper?.onDidNothing() } @@ -115,18 +115,21 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper checkPermission(OptiConstant.AUDIO_GALLERY, Manifest.permission.READ_EXTERNAL_STORAGE) } - sbrvVideoTrim?.setOnSeekBarRangedChangeListener(object : SeekBarRangedView.OnSeekBarRangedChangeListener { - override fun onChanged(view: SeekBarRangedView?, minValue: Float, maxValue: Float) { + val callback = object : SeekBarRangedView.SeekBarRangedChangeCallback { + + override fun onChanged(minValue: Float, maxValue: Float) { exoPlayer?.seekTo(minValue.toLong()) } - override fun onChanging(view: SeekBarRangedView?, minValue: Float, maxValue: Float) { + override fun onChanging(minValue: Float, maxValue: Float) { minSeekValue = minValue maxSeekValue = maxValue actvStartTime?.text = secToTime(minValue.toLong()) actvEndTime?.text = secToTime(maxValue.toLong()) } - }) + } + + sbrvVideoTrim?.actionCallback = callback setControls(false) } @@ -142,10 +145,12 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper } private fun initializePlayer() { - exoPlayer = ExoPlayerFactory.newSimpleInstance( - activity, DefaultRenderersFactory(activity), - DefaultTrackSelector(), DefaultLoadControl() - ) + exoPlayer = activity?.let { + ExoPlayerFactory.newSimpleInstance( + it, DefaultRenderersFactory(activity!!), + DefaultTrackSelector(), DefaultLoadControl() + ) + } ePlayer?.player = exoPlayer @@ -153,7 +158,11 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper exoPlayer?.addListener(playerListener) - exoPlayer?.prepare(buildMediaSource(Uri.fromFile(masterAudioFile), VideoFrom.LOCAL)) + buildMediaSource(Uri.fromFile(masterAudioFile), VideoFrom.LOCAL)?.let { + exoPlayer?.prepare( + it + ) + } exoPlayer?.seekTo(0) @@ -199,16 +208,19 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper } private val playerListener = object : Player.EventListener { - override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters?) { + override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters) { } override fun onSeekProcessed() { } - override fun onTracksChanged(trackGroups: TrackGroupArray?, trackSelections: TrackSelectionArray?) { + override fun onTracksChanged( + trackGroups: TrackGroupArray, + trackSelections: TrackSelectionArray + ) { } - override fun onPlayerError(error: ExoPlaybackException?) { + override fun onPlayerError(error: ExoPlaybackException) { } override fun onLoadingChanged(isLoading: Boolean) { @@ -224,7 +236,7 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) { } - override fun onTimelineChanged(timeline: Timeline?, manifest: Any?, reason: Int) { + override fun onTimelineChanged(timeline: Timeline, reason: Int) { } @@ -245,12 +257,12 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper if (!durationSet) { durationSet = true val duration = exoPlayer?.duration - sbrvVideoTrim?.maxValue = duration?.toFloat()!! + sbrvVideoTrim?.setMaxValue(duration?.toFloat()!!) actvStartTime?.text = secToTime(0) - actvEndTime?.text = secToTime(duration) + actvEndTime?.text = duration?.let { secToTime(it) } //set min & max seek value for audio trimming minSeekValue = 0F - maxSeekValue = duration.toFloat() + maxSeekValue = duration?.toFloat() ?: 0F } } } @@ -438,7 +450,7 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper muxVideoPlayer() } else { helper?.showLoading(false) - dialog.dismiss() + dialog?.dismiss() } } @@ -467,7 +479,7 @@ class OptiAddMusicFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHelper } } - override fun onCancel(dialog: DialogInterface?) { + override fun onCancel(dialog: DialogInterface) { super.onCancel(dialog) releasePlayer() } diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiAddTextFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiAddTextFragment.kt index 796c2e6..70f0222 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiAddTextFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiAddTextFragment.kt @@ -10,9 +10,6 @@ package com.obs.marveleditor.fragments import android.content.Context import android.os.Bundle import android.os.Environment -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View @@ -20,6 +17,11 @@ import android.view.ViewGroup import android.widget.EditText import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatEditText +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.utils.OptiConstant import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.R @@ -36,14 +38,14 @@ class OptiAddTextFragment : BottomSheetDialogFragment(), OptiPositionListener, O private lateinit var rootView: View private lateinit var linearLayoutManager: LinearLayoutManager private lateinit var rvPosition: RecyclerView - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private var videoFile: File? = null private var helper: OptiBaseCreatorDialogFragment.CallBacks? = null private lateinit var optiPositionAdapter: OptiPositionAdapter private var positionList: ArrayList = ArrayList() private var selectedPositionItem: String? = null - private var etText: EditText? = null + private var etText: AppCompatEditText? = null private var positionStr: String? = null private var mContext: Context? = null diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiBaseCreatorDialogFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiBaseCreatorDialogFragment.kt index bb60b1e..0f48991 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiBaseCreatorDialogFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiBaseCreatorDialogFragment.kt @@ -15,12 +15,12 @@ import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle import android.provider.Settings -import android.support.v4.app.ActivityCompat -import android.support.v4.app.DialogFragment import android.widget.Toast import com.github.hiteshsondhi88.libffmpeg.FFmpeg import java.io.File import android.webkit.MimeTypeMap +import androidx.core.app.ActivityCompat +import androidx.fragment.app.DialogFragment import com.obs.marveleditor.R abstract class OptiBaseCreatorDialogFragment : DialogFragment() { @@ -55,7 +55,7 @@ abstract class OptiBaseCreatorDialogFragment : DialogFragment() { } } - override fun onCancel(dialog: DialogInterface?) { + override fun onCancel(dialog: DialogInterface) { super.onCancel(dialog) stopRunningProcess() } diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiFilterFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiFilterFragment.kt index bb30a29..3149f5a 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiFilterFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiFilterFragment.kt @@ -12,15 +12,16 @@ import android.graphics.Bitmap import android.media.ThumbnailUtils import android.os.Bundle import android.provider.MediaStore -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.R import com.obs.marveleditor.adapter.OptiFilterAdapter @@ -37,8 +38,8 @@ class OptiFilterFragment : BottomSheetDialogFragment(), OptiFilterListener, Opti private lateinit var rootView: View private lateinit var linearLayoutManager: LinearLayoutManager private lateinit var rvFilter: RecyclerView - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private var videoFile: File? = null private var helper: OptiBaseCreatorDialogFragment.CallBacks? = null private var filterList: ArrayList = ArrayList() diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiMasterProcessorFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiMasterProcessorFragment.kt index 0099545..ca4685b 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiMasterProcessorFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiMasterProcessorFragment.kt @@ -23,18 +23,20 @@ import android.os.Environment import android.os.Handler import android.provider.MediaStore import android.provider.Settings -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v4.app.ActivityCompat -import android.support.v4.app.Fragment -import android.support.v4.content.ContextCompat -import android.support.v4.content.FileProvider -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.* +import androidx.appcompat.widget.AppCompatImageButton +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.core.content.FileProvider +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.github.hiteshsondhi88.libffmpeg.FFmpeg import com.github.hiteshsondhi88.libffmpeg.FFmpegLoadBinaryResponseHandler import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegNotSupportedException @@ -44,6 +46,7 @@ import com.google.android.exoplayer2.trackselection.DefaultTrackSelector import com.google.android.exoplayer2.trackselection.TrackSelectionArray import com.google.android.exoplayer2.ui.PlayerView import com.google.android.exoplayer2.util.Util +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.utils.OptiCommonMethods import com.obs.marveleditor.utils.OptiConstant @@ -70,10 +73,10 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca private var permissionList: ArrayList = ArrayList() private lateinit var preferences: SharedPreferences private lateinit var progressBar: ProgressBar - private var tvVideoProcessing: TextView? = null + private var tvVideoProcessing: AppCompatTextView? = null private var handler: Handler = Handler() - private var ibGallery: ImageButton? = null - private var ibCamera: ImageButton? = null + private var ibGallery: AppCompatImageButton? = null + private var ibCamera: AppCompatImageButton? = null private var masterVideoFile: File? = null private var playbackPosition: Long = 0 private var currentWindow: Int = 0 @@ -86,10 +89,10 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca private lateinit var optiVideoOptionsAdapter: OptiVideoOptionsAdapter private var videoOptions: ArrayList = ArrayList() private var orientationLand: Boolean = false - private var tvSave: ImageView? = null + private var tvSave: AppCompatImageView? = null private var isLargeVideo: Boolean? = false private var mContext: Context? = null - private var tvInfo: TextView? = null + private var tvInfo: AppCompatTextView? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { rootView = inflater.inflate(R.layout.opti_video_processor_fragment, container, false) @@ -184,13 +187,15 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca } tvInfo?.setOnClickListener{ - OptiVideoOptionFragment.newInstance().apply { - setHelper(this@OptiMasterProcessorFragment) - }.show(fragmentManager, "OptiVideoOptionFragment") + fragmentManager?.let { it1 -> + OptiVideoOptionFragment.newInstance().apply { + setHelper(this@OptiMasterProcessorFragment) + }.show(it1, "OptiVideoOptionFragment") + } } } - override fun onConfigurationChanged(newConfig: Configuration?) { + override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) //for playing video in landscape mode if (newConfig!!.orientation == Configuration.ORIENTATION_LANDSCAPE) { @@ -607,11 +612,13 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca tvInfo!!.visibility= View.GONE ePlayer?.useController = true - exoPlayer = ExoPlayerFactory.newSimpleInstance( - activity, - DefaultRenderersFactory(activity), - DefaultTrackSelector(), DefaultLoadControl() - ) + exoPlayer = activity?.let { + ExoPlayerFactory.newSimpleInstance( + it, + DefaultRenderersFactory(activity!!), + DefaultTrackSelector(), DefaultLoadControl() + ) + } ePlayer?.player = exoPlayer @@ -619,7 +626,11 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca exoPlayer?.addListener(playerListener) - exoPlayer?.prepare(VideoUtils.buildMediaSource(Uri.fromFile(masterVideoFile), VideoFrom.LOCAL)) + VideoUtils.buildMediaSource(Uri.fromFile(masterVideoFile), VideoFrom.LOCAL)?.let { + exoPlayer?.prepare( + it + ) + } exoPlayer?.seekTo(0) @@ -630,16 +641,19 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca } private val playerListener = object : Player.EventListener { - override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters?) { + override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters) { } override fun onSeekProcessed() { } - override fun onTracksChanged(trackGroups: TrackGroupArray?, trackSelections: TrackSelectionArray?) { + override fun onTracksChanged( + trackGroups: TrackGroupArray, + trackSelections: TrackSelectionArray + ) { } - override fun onPlayerError(error: ExoPlaybackException?) { + override fun onPlayerError(error: ExoPlaybackException) { Log.v(tagName, "onPlayerError: ${error.toString()}") Toast.makeText(mContext, "Video format is not supported", Toast.LENGTH_LONG).show() } @@ -657,7 +671,7 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) { } - override fun onTimelineChanged(timeline: Timeline?, manifest: Any?, reason: Int) { + override fun onTimelineChanged(timeline: Timeline, reason: Int) { } @@ -849,7 +863,7 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca private fun showBottomSheetDialogFragment(bottomSheetDialogFragment: BottomSheetDialogFragment) { val bundle = Bundle() bottomSheetDialogFragment.arguments = bundle - bottomSheetDialogFragment.show(fragmentManager, bottomSheetDialogFragment.tag) + fragmentManager?.let { bottomSheetDialogFragment.show(it, bottomSheetDialogFragment.tag) } } override fun videoOption(option: String) { @@ -895,11 +909,13 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca /*val duration = OptiCommonMethods.convertDurationInSec(timeInMillis) Log.v(tagName, "videoDuration: $duration")*/ - OptiAddMusicFragment.newInstance().apply { - setHelper(this@OptiMasterProcessorFragment) - setFilePathFromSource(file) - setDuration(timeInMillis) - }.show(fragmentManager, "OptiAddMusicFragment") + fragmentManager?.let { + OptiAddMusicFragment.newInstance().apply { + setHelper(this@OptiMasterProcessorFragment) + setFilePathFromSource(file) + setDuration(timeInMillis) + }.show(it, "OptiAddMusicFragment") + } } if (masterVideoFile == null) { @@ -916,10 +932,12 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca playbackPosition = 0 currentWindow = 0 - OptiPlaybackSpeedDialogFragment.newInstance().apply { - setHelper(this@OptiMasterProcessorFragment) - setFilePathFromSource(file) - }.show(fragmentManager, "OptiPlaybackSpeedDialogFragment") + fragmentManager?.let { + OptiPlaybackSpeedDialogFragment.newInstance().apply { + setHelper(this@OptiMasterProcessorFragment) + setFilePathFromSource(file) + }.show(it, "OptiPlaybackSpeedDialogFragment") + } } if (masterVideoFile == null) { @@ -963,9 +981,11 @@ class OptiMasterProcessorFragment : Fragment(), OptiBaseCreatorDialogFragment.Ca } OptiConstant.MERGE -> { - OptiMergeFragment.newInstance().apply { - setHelper(this@OptiMasterProcessorFragment) - }.show(fragmentManager, "OptiMergeFragment") + fragmentManager?.let { + OptiMergeFragment.newInstance().apply { + setHelper(this@OptiMasterProcessorFragment) + }.show(it, "OptiMergeFragment") + } } OptiConstant.TRANSITION -> { diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiMergeFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiMergeFragment.kt index 3c7f563..49f1261 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiMergeFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiMergeFragment.kt @@ -18,19 +18,21 @@ import android.net.Uri import android.os.Bundle import android.provider.MediaStore import android.provider.Settings -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v4.app.ActivityCompat import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatImageView +import androidx.core.app.ActivityCompat +import androidx.core.app.ActivityCompat.startActivityForResult import com.obs.marveleditor.utils.OptiConstant import com.obs.marveleditor.R import com.obs.marveleditor.utils.OptiUtils import com.obs.marveleditor.interfaces.OptiDialogueHelper import com.facebook.drawee.view.SimpleDraweeView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.interfaces.OptiFFMpegCallback import java.io.File @@ -39,8 +41,8 @@ class OptiMergeFragment : BottomSheetDialogFragment(), OptiDialogueHelper, OptiF private var tagName: String = OptiMergeFragment::class.java.simpleName private lateinit var rootView: View - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private lateinit var ivVideoOne: SimpleDraweeView private lateinit var ivVideoTwo: SimpleDraweeView private var videoFileOne: File? = null diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiPlaybackSpeedDialogFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiPlaybackSpeedDialogFragment.kt index 28c38ba..1942910 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiPlaybackSpeedDialogFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiPlaybackSpeedDialogFragment.kt @@ -9,15 +9,16 @@ package com.obs.marveleditor.fragments import android.content.Context import android.os.Bundle -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.utils.OptiConstant import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.R @@ -37,8 +38,8 @@ class OptiPlaybackSpeedDialogFragment : BottomSheetDialogFragment(), OptiDialogu private lateinit var rvPlaybackSpeed: RecyclerView private lateinit var optiPlaybackSpeedAdapter: OptiPlaybackSpeedAdapter private var playbackSpeed: ArrayList = ArrayList() - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private var masterFile: File? = null private var isHavingAudio = true private var helper: OptiBaseCreatorDialogFragment.CallBacks? = null diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiTransitionFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiTransitionFragment.kt index 4c0dded..b780657 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiTransitionFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiTransitionFragment.kt @@ -9,15 +9,16 @@ package com.obs.marveleditor.fragments import android.content.Context import android.os.Bundle -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatImageView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.R import com.obs.marveleditor.adapter.OptiTransitionAdapter @@ -34,8 +35,8 @@ class OptiTransitionFragment : BottomSheetDialogFragment(), OptiFilterListener, private lateinit var rootView: View private lateinit var linearLayoutManager: LinearLayoutManager private lateinit var rvTransition: RecyclerView - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private var videoFile: File? = null private var helper: OptiBaseCreatorDialogFragment.CallBacks? = null private var transitionList: ArrayList = ArrayList() diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiTrimFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiTrimFragment.kt index 015ecff..a60a7b7 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiTrimFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiTrimFragment.kt @@ -9,15 +9,16 @@ package com.obs.marveleditor.fragments import android.content.Context import android.os.Bundle -import android.support.design.widget.BottomSheetDialogFragment -import android.support.v7.widget.AppCompatTextView import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView import com.github.guilhe.views.SeekBarRangedView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.obs.marveleditor.utils.OptiConstant import com.obs.marveleditor.OptiVideoEditor import com.obs.marveleditor.R @@ -30,8 +31,8 @@ class OptiTrimFragment : BottomSheetDialogFragment(), OptiFFMpegCallback { private var tagName: String = OptiTrimFragment::class.java.simpleName private lateinit var rootView: View - private lateinit var ivClose: ImageView - private lateinit var ivDone: ImageView + private lateinit var ivClose: AppCompatImageView + private lateinit var ivDone: AppCompatImageView private var videoFile: File? = null private var helper: OptiBaseCreatorDialogFragment.CallBacks? = null private var sbrvVideoTrim: SeekBarRangedView? = null @@ -81,22 +82,23 @@ class OptiTrimFragment : BottomSheetDialogFragment(), OptiFFMpegCallback { Log.v(tagName, "duration: $duration") Log.v(tagName, "duration: " + VideoUtils.secToTime(duration!!)) - sbrvVideoTrim?.minValue = 0f - sbrvVideoTrim?.maxValue = duration?.toFloat()!! + sbrvVideoTrim?.setMinValue(0f) + sbrvVideoTrim?.setMaxValue(duration?.toFloat()!!) actvStartTime?.text = VideoUtils.secToTime(0) actvEndTime?.text = VideoUtils.secToTime(duration!!) - sbrvVideoTrim?.setOnSeekBarRangedChangeListener(object : SeekBarRangedView.OnSeekBarRangedChangeListener { - override fun onChanged(view: SeekBarRangedView?, minValue: Float, maxValue: Float) { + val callback = object : SeekBarRangedView.SeekBarRangedChangeCallback { + override fun onChanged(minValue: Float, maxValue: Float) { //exoPlayer?.seekTo(minValue.toLong()) } - override fun onChanging(view: SeekBarRangedView?, minValue: Float, maxValue: Float) { + override fun onChanging(minValue: Float, maxValue: Float) { Log.v(tagName, "minValue: $minValue, maxValue: $maxValue") actvStartTime?.text = VideoUtils.secToTime(minValue.toLong()) actvEndTime?.text = VideoUtils.secToTime(maxValue.toLong()) } - }) + } + sbrvVideoTrim?.actionCallback = callback } fun setHelper(helper: OptiBaseCreatorDialogFragment.CallBacks) { diff --git a/app/src/main/java/com/obs/marveleditor/fragments/OptiVideoOptionFragment.kt b/app/src/main/java/com/obs/marveleditor/fragments/OptiVideoOptionFragment.kt index 75538c5..1a893dd 100644 --- a/app/src/main/java/com/obs/marveleditor/fragments/OptiVideoOptionFragment.kt +++ b/app/src/main/java/com/obs/marveleditor/fragments/OptiVideoOptionFragment.kt @@ -8,11 +8,12 @@ package com.obs.marveleditor.fragments import android.os.Bundle -import android.support.v7.widget.AppCompatImageView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView import com.obs.marveleditor.R import com.obs.marveleditor.interfaces.OptiDialogueHelper import java.io.File @@ -36,8 +37,8 @@ class OptiVideoOptionFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHel //private var tagName: String = OptiVideoOptionFragment::class.java.simpleName private var acivClose: AppCompatImageView? = null - private var tvGallery: TextView? = null - private var tvCamera: TextView? = null + private var tvGallery: AppCompatTextView? = null + private var tvCamera: AppCompatTextView? = null private var helper: CallBacks? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -54,16 +55,16 @@ class OptiVideoOptionFragment : OptiBaseCreatorDialogFragment(), OptiDialogueHel tvCamera = inflate?.findViewById(R.id.tvCamera) acivClose?.setOnClickListener { - dialog.dismiss() + dialog?.dismiss() } tvGallery?.setOnClickListener { - dialog.dismiss() + dialog?.dismiss() helper?.openGallery() } tvCamera?.setOnClickListener { - dialog.dismiss() + dialog?.dismiss() helper?.openCamera() } } diff --git a/app/src/main/java/com/obs/marveleditor/utils/OptiCustomRangeSeekBar.java b/app/src/main/java/com/obs/marveleditor/utils/OptiCustomRangeSeekBar.java index 73f2a1c..92e91f0 100644 --- a/app/src/main/java/com/obs/marveleditor/utils/OptiCustomRangeSeekBar.java +++ b/app/src/main/java/com/obs/marveleditor/utils/OptiCustomRangeSeekBar.java @@ -25,11 +25,13 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + import com.obs.marveleditor.R; import com.obs.marveleditor.interfaces.OptiOnRangeSeekBarChangeListener; diff --git a/app/src/main/java/com/obs/marveleditor/utils/OptiUtils.kt b/app/src/main/java/com/obs/marveleditor/utils/OptiUtils.kt index a073ceb..1199bba 100644 --- a/app/src/main/java/com/obs/marveleditor/utils/OptiUtils.kt +++ b/app/src/main/java/com/obs/marveleditor/utils/OptiUtils.kt @@ -134,16 +134,16 @@ object OptiUtils { fun createVideoFile(context: Context): File { val timeStamp: String = SimpleDateFormat(OptiConstant.DATE_FORMAT, Locale.getDefault()).format(Date()) val imageFileName: String = OptiConstant.APP_NAME + timeStamp + "_" - val storageDir: File = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES) - if (!storageDir.exists()) storageDir.mkdirs() + val storageDir: File? = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES) + if (storageDir != null && !storageDir.exists()) storageDir.mkdirs() return File.createTempFile(imageFileName, OptiConstant.VIDEO_FORMAT, storageDir) } fun createAudioFile(context: Context): File { val timeStamp: String = SimpleDateFormat(OptiConstant.DATE_FORMAT, Locale.getDefault()).format(Date()) val imageFileName: String = OptiConstant.APP_NAME + timeStamp + "_" - val storageDir: File = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES) - if (!storageDir.exists()) storageDir.mkdirs() + val storageDir: File? = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES) + if (storageDir != null && !storageDir.exists()) storageDir.mkdirs() return File.createTempFile(imageFileName, OptiConstant.AUDIO_FORMAT, storageDir) } @@ -151,9 +151,9 @@ object OptiUtils { val retriever = MediaMetadataRetriever() retriever.setDataSource(context, Uri.fromFile(file)) val time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION) - val timeInMillis = time.toLong() + val timeInMillis = time?.toLong() retriever.release() - return timeInMillis + return timeInMillis ?: 0 } } diff --git a/app/src/main/java/com/obs/marveleditor/utils/OptiVideoUtils.kt b/app/src/main/java/com/obs/marveleditor/utils/OptiVideoUtils.kt index 56a25d7..77aacc5 100644 --- a/app/src/main/java/com/obs/marveleditor/utils/OptiVideoUtils.kt +++ b/app/src/main/java/com/obs/marveleditor/utils/OptiVideoUtils.kt @@ -48,7 +48,11 @@ object VideoUtils { } } - return ExtractorMediaSource.Factory(factory).createMediaSource(fileDataSource.uri) + return fileDataSource.uri?.let { + ExtractorMediaSource.Factory(factory).createMediaSource( + it + ) + } } VideoFrom.REMOTE -> { diff --git a/app/src/main/java/com/obs/marveleditor/videoTrimmer/OptiHgLVideoTrimmer.java b/app/src/main/java/com/obs/marveleditor/videoTrimmer/OptiHgLVideoTrimmer.java index fd86b47..d12a5ca 100644 --- a/app/src/main/java/com/obs/marveleditor/videoTrimmer/OptiHgLVideoTrimmer.java +++ b/app/src/main/java/com/obs/marveleditor/videoTrimmer/OptiHgLVideoTrimmer.java @@ -13,8 +13,6 @@ import android.os.Build; import android.os.Handler; import android.os.Message; -import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.util.Log; import android.view.GestureDetector; @@ -22,12 +20,16 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import android.widget.*; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.SeekBar; +import android.widget.TextView; +import android.widget.Toast; +import android.widget.VideoView; -import java.io.File; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; import com.obs.marveleditor.R; import com.obs.marveleditor.videoTrimmer.interfaces.OptiOnHgLVideoListener; @@ -41,6 +43,11 @@ import com.obs.marveleditor.videoTrimmer.view.OptiThumb; import com.obs.marveleditor.videoTrimmer.view.OptiTimeLineView; +import java.io.File; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + import static com.obs.marveleditor.videoTrimmer.utils.OptiTrimVideoUtils.stringForTime; public class OptiHgLVideoTrimmer extends FrameLayout { diff --git a/app/src/main/java/com/obs/marveleditor/videoTrimmer/utils/OptiFileUtils.java b/app/src/main/java/com/obs/marveleditor/videoTrimmer/utils/OptiFileUtils.java index 9b40adc..fa31c3f 100644 --- a/app/src/main/java/com/obs/marveleditor/videoTrimmer/utils/OptiFileUtils.java +++ b/app/src/main/java/com/obs/marveleditor/videoTrimmer/utils/OptiFileUtils.java @@ -16,7 +16,8 @@ import android.os.Environment; import android.provider.DocumentsContract; import android.provider.MediaStore; -import android.support.annotation.NonNull; + +import androidx.annotation.NonNull; public class OptiFileUtils { diff --git a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiProgressBarView.java b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiProgressBarView.java index b729aae..f24571c 100644 --- a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiProgressBarView.java +++ b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiProgressBarView.java @@ -11,11 +11,12 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.View; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + import com.obs.marveleditor.R; import com.obs.marveleditor.videoTrimmer.interfaces.OptiOnProgressVideoListener; import com.obs.marveleditor.videoTrimmer.interfaces.OptiOnRangeSeekBarListener; diff --git a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiRangeSeekBarView.java b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiRangeSeekBarView.java index d61527c..6021560 100644 --- a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiRangeSeekBarView.java +++ b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiRangeSeekBarView.java @@ -11,11 +11,13 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; + import com.obs.marveleditor.R; import com.obs.marveleditor.videoTrimmer.interfaces.OptiOnRangeSeekBarListener; diff --git a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiThumb.java b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiThumb.java index 56919b3..42896e4 100644 --- a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiThumb.java +++ b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiThumb.java @@ -10,8 +10,11 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.support.annotation.NonNull; + +import androidx.annotation.NonNull; + import com.obs.marveleditor.R; + import java.util.List; import java.util.Vector; diff --git a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiTimeLineView.java b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiTimeLineView.java index 2ea6dc5..f681f27 100644 --- a/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiTimeLineView.java +++ b/app/src/main/java/com/obs/marveleditor/videoTrimmer/view/OptiTimeLineView.java @@ -13,12 +13,13 @@ import android.media.MediaMetadataRetriever; import android.net.Uri; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.util.LongSparseArray; import android.view.View; +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; + import com.obs.marveleditor.R; import com.obs.marveleditor.videoTrimmer.utils.OptiBackgroundExecutor; import com.obs.marveleditor.videoTrimmer.utils.OptiUiThreadExecutor; diff --git a/app/src/main/res/drawable-hdpi/ic_settings.png b/app/src/main/res/drawable-hdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e8e0e40f532c3076b4acc764cd13ab3af233d5 GIT binary patch literal 1678 zcmZ{kX;{+-62||zxdH@8O}KJsD@Q@uxZn1}&hxzUduHZ&XTD8oOf(H?U}*pV z05URy!qAcMQF?G)J_6qSTnA`sNK^;_+_`MHodna>plk*$6lnj!dRAB1aUvK|0C2_; z0K^vn;4fWEJOco^x-D~w06?w+fL+4cUb??-06%enM$u6hn_+!LI_L`{j%Mo^@n3}x zrUwE5>`){nB<|$IVl}Vi8>WT2sD(?ugaLp{^}?m127JAw%N!MI!(0*TrdO-Vtg4QCsi+}^~NAuzY(4yknz)kT{d zTbF%>A&A)z>Bjp|S5P<-IPdkpwBlbs>EnoKv!`nz^7wZ7eB3<-lO~g6^6$tG121ci z6zPk0GLogtd!fuPkd+%m*Y{PEyfuenI&;yW735~nyAJFI?S@oB{t%0%M&T%|p!)@+ zu+6puvtfxrXdp%gzi)~As5g3)#u~%n3RFF~_t6tY=@X-eOxV?~^YctpzMlYbw)F$x z?C4hknwP|*e&%fygStQ*$@P4pEyA%hB5c5T7~*Kzlwvn$M%M3#_3yzsebu_UB{En6 ze)I~Rbmn`VffjniR!aW^<8k{^H z+K*tH$(DiU(vo6pI%3+AS()YQ1!8xxS7YPEs<5af-_|U0V1%mx2(EPxo0Dn5Q(EbeMK!*k2RV zD9Hs4$KIp{4sMt_iAzORic?02d5@Sx99+27r$hpSo+=N0KXqLD2RS@JdOdgCN(WbjZcLPQEtRj=H7Rju~KrvTZFb| zS6op%d(hF&XMxR`0&0zIk=cEE`Y+yl0%}Q9Slkg@XX3T^K~7e` z`uf>T>@5o9*0?SHapG*$uf;I67LHL|&|8hcA7H_8NaLp{wArdUaqp=AF%iLSd{n zrJ+3yCHK0|O&!+4gZ6Go)Rf;p_dNd;Q~BC>F<5&@wlDUCiCe&R!2cj$1Ml|XBtTYt z+7<0k5$Ub+QDtp#agfjUv~p7wtu0I}V6kqerSpUSp;+BRkKx0zo#HE${WpD~8>@U7qo*x(wa)WkSpPwY7$-SM=V+@Jf%C4J+?} z>$m0E9&-w-i)_i+GV)%VC#lCQG7QnfAe67sb8bxAflKpsGZd${4--20VCPNPmulUQ zb;zNza*~sBxMa>Lt_}c+K=i>A_Tx$3aU>F%Kp+!{dp~A^%R<(>|1o3=l6fil|KGs6 zGZ?8eIDfp5eL9tVA}O1T&ppKhQg|6$vb(!`PNvX3GbxqFNymqKX7MRuu?*w(su-OI Nh@?hS+Cvl1{RchF#X$f7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_settings.png b/app/src/main/res/drawable-xhdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..0a90935c5837b2cfad879e0a7e62f6ce395acf1e GIT binary patch literal 2222 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 G(tiLb1KG_0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/curve_shape_background_black.xml b/app/src/main/res/drawable/curve_shape_background_black.xml new file mode 100644 index 0000000..872a082 --- /dev/null +++ b/app/src/main/res/drawable/curve_shape_background_black.xml @@ -0,0 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_hide.xml b/app/src/main/res/drawable/ic_hide.xml new file mode 100644 index 0000000..bd43feb --- /dev/null +++ b/app/src/main/res/drawable/ic_hide.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_video_cutline.png b/app/src/main/res/drawable/ic_video_cutline.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5e4c755dfc3f79225439e5a6c1d262e06151da GIT binary patch literal 1303 zcmeAS@N?(olHy`uVBq!ia0vp^Vn7_u!3HE5Hf;R_Bqd8+BT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfglRhD4M^`1)8S=jZArg4F0$er{{GxPyLrY6bkQqisxQ#zd*q`*i1pgH!(Rg4gi&u1T;f0Gc(1?!pPXr&DGe+)YKUm?ylyJmIlslCN8edPL>81 z#;z7Hy)OC5rManjB{01y2))iY^@0*ZZUN9{m(-%nveXo}qWoM1u&1puvAD(6)x^xi z&C<-&)X5FITOfK#DphYAP1iGQ}cl7y$G1FFYRnS z$-uza>FMGaQgQ3ejon_%jv{OiV!yJwIC4ZqEEQA@Ycf+i|6r*|4TJ6$FBV}D*XrCY z7mjh;H63%)Rb}MX)@53$A~ucj`v2*h9o;wIJUY|Kg1Mf9>+@*WKq|CX3>ty5{>Bw0v=`uchA`c1kJ@7o#%=aMi5HsI{ zxI_7T55f=m^F2sEw4LvP^`Yl{4~!3)d)!p2@-?1wDaK}&*o9>}X=}GWl8fBNpx^m5 z_vRhvYrT7QPu88-`1`HcFQw;}mpmHGQhYXEzE;w>WTNj9ImT;C)pV1Sa+m3QFiJWZ zooKo^f8xHTD{6Kd3aZyDxF7rKb>-Us$`2R5=W%JT*>DI#{I~z%+`!0Su-)TfQ1ijJ PprXpt)z4*}Q$iB}{yfj5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/rounded_corners.xml b/app/src/main/res/drawable/rounded_corners.xml new file mode 100644 index 0000000..2a24999 --- /dev/null +++ b/app/src/main/res/drawable/rounded_corners.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8b49e5a..72f699f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,13 +1,11 @@ - - - + app:layout_constraintBottom_toBottomOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/exo_playback_control_view.xml b/app/src/main/res/layout/exo_playback_control_view.xml new file mode 100644 index 0000000..ce11077 --- /dev/null +++ b/app/src/main/res/layout/exo_playback_control_view.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_activity_trimmer.xml b/app/src/main/res/layout/opti_activity_trimmer.xml index 5a8a2ff..36b9f99 100644 --- a/app/src/main/res/layout/opti_activity_trimmer.xml +++ b/app/src/main/res/layout/opti_activity_trimmer.xml @@ -5,8 +5,7 @@ ~ * */ --> - diff --git a/app/src/main/res/layout/opti_add_music_includer.xml b/app/src/main/res/layout/opti_add_music_includer.xml index 1f68697..019d934 100644 --- a/app/src/main/res/layout/opti_add_music_includer.xml +++ b/app/src/main/res/layout/opti_add_music_includer.xml @@ -1,5 +1,4 @@ - - + android:layout_width="match_parent" + android:layout_height="match_parent"> \ No newline at end of file diff --git a/app/src/main/res/layout/opti_add_video_includer.xml b/app/src/main/res/layout/opti_add_video_includer.xml index 59ab59e..e31b2fc 100644 --- a/app/src/main/res/layout/opti_add_video_includer.xml +++ b/app/src/main/res/layout/opti_add_video_includer.xml @@ -1,5 +1,4 @@ - - + android:layout_width="match_parent" + android:layout_height="match_parent"> \ No newline at end of file diff --git a/app/src/main/res/layout/opti_clipart_view.xml b/app/src/main/res/layout/opti_clipart_view.xml index 9b20b44..f48b889 100644 --- a/app/src/main/res/layout/opti_clipart_view.xml +++ b/app/src/main/res/layout/opti_clipart_view.xml @@ -1,17 +1,16 @@ - - - + - + android:contentDescription="@string/app_name" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_filter_view.xml b/app/src/main/res/layout/opti_filter_view.xml index c546ec9..266b4de 100644 --- a/app/src/main/res/layout/opti_filter_view.xml +++ b/app/src/main/res/layout/opti_filter_view.xml @@ -1,19 +1,18 @@ - - - + - + android:background="@drawable/curve_shape_bg" /> - + - + app:layout_constraintBottom_toBottomOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_add_clip_art.xml b/app/src/main/res/layout/opti_fragment_add_clip_art.xml index 24e6f34..e6565d4 100644 --- a/app/src/main/res/layout/opti_fragment_add_clip_art.xml +++ b/app/src/main/res/layout/opti_fragment_add_clip_art.xml @@ -1,19 +1,17 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - + app:layout_constraintTop_toBottomOf="@+id/iv_close" /> - + app:layout_constraintTop_toBottomOf="@+id/rvClipArt" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_add_music_dialog.xml b/app/src/main/res/layout/opti_fragment_add_music_dialog.xml index 32c2dd3..6bfbce6 100644 --- a/app/src/main/res/layout/opti_fragment_add_music_dialog.xml +++ b/app/src/main/res/layout/opti_fragment_add_music_dialog.xml @@ -1,13 +1,11 @@ - - - - + android:textSize="@dimen/textLarge" /> - + app:srcCompat="@drawable/close" /> + android:background="@color/colorDivider" /> - - + app:layout_constraintEnd_toStartOf="@+id/ivRadio" /> - - + app:layout_constraintStart_toEndOf="@+id/tv_selected_audio" /> + + android:background="@color/colorDivider" /> - + android:textSize="@dimen/textLarge" /> + custom:rounded="false" /> - + android:gravity="start|center_vertical" /> - + android:gravity="end|center_vertical" /> - + android:visibility="visible" /> + android:indeterminate="true" /> - + android:text="@string/processing_video" /> diff --git a/app/src/main/res/layout/opti_fragment_add_text.xml b/app/src/main/res/layout/opti_fragment_add_text.xml index b8060d3..37e3991 100644 --- a/app/src/main/res/layout/opti_fragment_add_text.xml +++ b/app/src/main/res/layout/opti_fragment_add_text.xml @@ -1,19 +1,17 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - + android:inputType="text" /> - + app:layout_constraintTop_toBottomOf="@+id/etText" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_add_video_dialog.xml b/app/src/main/res/layout/opti_fragment_add_video_dialog.xml index f2f692a..2fc1235 100644 --- a/app/src/main/res/layout/opti_fragment_add_video_dialog.xml +++ b/app/src/main/res/layout/opti_fragment_add_video_dialog.xml @@ -1,13 +1,11 @@ - - - - + android:textSize="@dimen/textLarge" /> - + app:srcCompat="@drawable/close" /> + android:background="@color/colorDivider" /> - - + app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintTop_toBottomOf="@+id/tvGallery" /> - + diff --git a/app/src/main/res/layout/opti_fragment_filter_dialog.xml b/app/src/main/res/layout/opti_fragment_filter_dialog.xml index aa33762..737c62c 100644 --- a/app/src/main/res/layout/opti_fragment_filter_dialog.xml +++ b/app/src/main/res/layout/opti_fragment_filter_dialog.xml @@ -1,19 +1,17 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - + app:layout_constraintTop_toBottomOf="@+id/iv_close" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_merge_dialog.xml b/app/src/main/res/layout/opti_fragment_merge_dialog.xml index 4a4de4c..cf18355 100644 --- a/app/src/main/res/layout/opti_fragment_merge_dialog.xml +++ b/app/src/main/res/layout/opti_fragment_merge_dialog.xml @@ -1,19 +1,17 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - - + - + - - + - + - + app:layout_constraintBottom_toBottomOf="parent" /> - + app:layout_constraintBottom_toBottomOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_playback_speed_dialog.xml b/app/src/main/res/layout/opti_fragment_playback_speed_dialog.xml index c9e72b0..50ea3db 100644 --- a/app/src/main/res/layout/opti_fragment_playback_speed_dialog.xml +++ b/app/src/main/res/layout/opti_fragment_playback_speed_dialog.xml @@ -1,19 +1,17 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - + app:layout_constraintTop_toBottomOf="@+id/iv_close" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_transition.xml b/app/src/main/res/layout/opti_fragment_transition.xml index 1306030..5a859e8 100644 --- a/app/src/main/res/layout/opti_fragment_transition.xml +++ b/app/src/main/res/layout/opti_fragment_transition.xml @@ -1,19 +1,17 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - + app:layout_constraintTop_toBottomOf="@+id/iv_close" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_fragment_trim.xml b/app/src/main/res/layout/opti_fragment_trim.xml index 2ee15c6..7528867 100644 --- a/app/src/main/res/layout/opti_fragment_trim.xml +++ b/app/src/main/res/layout/opti_fragment_trim.xml @@ -1,19 +1,18 @@ - - - - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> + app:layout_constraintTop_toBottomOf="@+id/iv_done" /> - + android:gravity="start|center_vertical" /> - + android:gravity="end|center_vertical" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_layout_custom_exo_player.xml b/app/src/main/res/layout/opti_layout_custom_exo_player.xml index b1d9aca..c12e66b 100644 --- a/app/src/main/res/layout/opti_layout_custom_exo_player.xml +++ b/app/src/main/res/layout/opti_layout_custom_exo_player.xml @@ -1,5 +1,4 @@ - - + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> - + android:paddingEnd="@dimen/_15sdp" /> - + android:paddingEnd="@dimen/_15sdp" /> - - + android:visibility="gone" /> @@ -77,7 +76,7 @@ android:background="@color/black" app:controller_layout_id="@layout/exo_playback_control_view" app:surface_type="surface_view" - app:use_controller="false"/> + app:use_controller="false" /> + android:progressTint="@color/white" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_option_view.xml b/app/src/main/res/layout/opti_option_view.xml index 32dc3a8..cf68eb3 100644 --- a/app/src/main/res/layout/opti_option_view.xml +++ b/app/src/main/res/layout/opti_option_view.xml @@ -1,18 +1,17 @@ - - - + - + app:layout_constraintBottom_toBottomOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_option_view_land.xml b/app/src/main/res/layout/opti_option_view_land.xml index 18346ed..9a9fb74 100644 --- a/app/src/main/res/layout/opti_option_view_land.xml +++ b/app/src/main/res/layout/opti_option_view_land.xml @@ -1,18 +1,17 @@ - - - + - + app:layout_constraintBottom_toBottomOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_playback_view.xml b/app/src/main/res/layout/opti_playback_view.xml index d321fa6..0652fc2 100644 --- a/app/src/main/res/layout/opti_playback_view.xml +++ b/app/src/main/res/layout/opti_playback_view.xml @@ -1,17 +1,16 @@ - - - + - + app:layout_constraintBottom_toBottomOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_splash_screen.xml b/app/src/main/res/layout/opti_splash_screen.xml index dfcd4f9..6aead91 100644 --- a/app/src/main/res/layout/opti_splash_screen.xml +++ b/app/src/main/res/layout/opti_splash_screen.xml @@ -1,18 +1,16 @@ - - - - + app:layout_constraintStart_toStartOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/opti_video_processor_fragment.xml b/app/src/main/res/layout/opti_video_processor_fragment.xml index 334b969..c9e9ade 100644 --- a/app/src/main/res/layout/opti_video_processor_fragment.xml +++ b/app/src/main/res/layout/opti_video_processor_fragment.xml @@ -1,20 +1,18 @@ - - - - @@ -23,7 +21,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@+id/exoPlayer"/> + app:layout_constraintBottom_toTopOf="@+id/exoPlayer" /> + app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintTop_toTopOf="parent" /> + style="?android:attr/progressBarStyleHorizontal" /> - + android:layout_marginBottom="@dimen/_10sdp" /> - + app:layout_constraintEnd_toEndOf="parent" /> - + android:orientation="horizontal" /> - + android:contentDescription="@string/app_name" /> - + android:contentDescription="@string/app_name" /> - + - + diff --git a/app/src/main/res/layout/opti_view_time_line.xml b/app/src/main/res/layout/opti_view_time_line.xml index ebd6b76..6ac95d3 100644 --- a/app/src/main/res/layout/opti_view_time_line.xml +++ b/app/src/main/res/layout/opti_view_time_line.xml @@ -1,5 +1,4 @@ - - - - - + android:layout_above="@+id/layout" + android:background="@android:color/black" + android:gravity="center" + android:orientation="vertical"> - + + + android:contentDescription="@string/play_time" /> - - + android:layout_alignParentBottom="true" + android:background="@color/background_video_color"> + + + android:id="@+id/timeVideoView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/handlerTop" /> + android:id="@+id/timeLineView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/timeVideoView" /> + android:id="@+id/timeLineBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignTop="@+id/timeLineView" /> + android:id="@+id/lineTop" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_below="@+id/timeLineBar" + android:background="@color/line_button" /> - -