diff --git a/app/build.gradle b/app/build.gradle index 1135d4c..dcdaaeb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,9 @@ implementation "android.arch.lifecycle:runtime:1.0.3" implementation "android.arch.lifecycle:extensions:1.0.0-rc1" annotationProcessor "android.arch.lifecycle:compiler:1.0.0-rc1" + + // TapTargetView + implementation 'com.getkeepsafe.taptargetview:taptargetview:1.10.0' } apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt b/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt index 5ffa979..1c360ef 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt @@ -2,18 +2,25 @@ import android.arch.lifecycle.ViewModelProviders import android.databinding.DataBindingUtil +import android.graphics.Typeface import android.os.Bundle import android.support.v7.app.AppCompatActivity +import com.getkeepsafe.taptargetview.TapTarget +import com.getkeepsafe.taptargetview.TapTargetView import com.google.android.gms.ads.AdSize import jackall.overlaymulticounter.Const import jackall.overlaymulticounter.R +import jackall.overlaymulticounter.common.PreferenceKeys +import jackall.overlaymulticounter.common.PreferenceNames import jackall.overlaymulticounter.databinding.ActivityMainBinding import jackall.overlaymulticounter.db.CounterRealmHelper import jackall.overlaymulticounter.utils.AdUtil +import jackall.overlaymulticounter.utils.MySharedPref import jackall.overlaymulticounter.viewmodel.MainViewModel import jackall.overlaymulticounter.vo.Counter import kotlinx.android.synthetic.main.activity_main.view.* + class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding @@ -40,5 +47,32 @@ super.onStart() AdUtil.startBannerAd(this, binding.root.main_banner_frame, AdSize.BANNER, Const.mainBannerUnitId) AdUtil.startInterstitialAd(this) + if (MySharedPref(this, PreferenceNames.CONFIG).getValue(PreferenceKeys.initialOverlay, Boolean::class.java, true) as Boolean) { + TapTargetView.showFor(this, // `this` is an Activity + TapTarget.forView(findViewById(R.id.main_service_button), + resources.getString(R.string.target_title), + resources.getString(R.string.target_text)) + // All options below are optional + .outerCircleColor(R.color.outer_circle_color) + .outerCircleAlpha(0.96f) + .targetCircleColor(R.color.target_circle_color) + .titleTextSize(24) + .descriptionTextSize(20) + .descriptionTextColor(R.color.target_description_color) + .textColor(R.color.target_text_color) + .textTypeface(Typeface.SANS_SERIF) + .dimColor(R.color.target_dim_color) + .drawShadow(true) + .cancelable(false) + .tintTarget(true) + .transparentTarget(true) + .targetRadius(50), + object : TapTargetView.Listener() { + override fun onTargetClick(view: TapTargetView) { + super.onTargetClick(view) + binding.root.main_service_button.callOnClick() + } + }) + } } } diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt b/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt index a14910e..1521d8f 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/common/PreferenceKeys.kt @@ -8,5 +8,6 @@ enum class PreferenceKeys(val preferenceNames: PreferenceNames, val valueClass: Class<*>, val key: String) { viewX(PreferenceNames.CONFIG, Int::class.java, "viewX"), viewY(PreferenceNames.CONFIG, Int::class.java, "viewY"), - interstitialCount(PreferenceNames.CONFIG,Int::class.java,"intersititialCount") + interstitialCount(PreferenceNames.CONFIG, Int::class.java, "intersititialCount"), + initialOverlay(PreferenceNames.CONFIG, Boolean::class.java, "initialOverlay") } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/service/MainService.kt b/app/src/main/kotlin/jackall/overlaymulticounter/service/MainService.kt index 46c82a7..8438583 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/service/MainService.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/service/MainService.kt @@ -52,6 +52,7 @@ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + mySharedPref.putValue(PreferenceKeys.initialOverlay, Boolean::class.java, false) val notificationBuilder = NotificationCompat.Builder(this, Const.serviceChannelId) .setSmallIcon(R.mipmap.ic_launcher) // TODO:白抜きのアイコンをセット notificationBuilder.setContentIntent(PendingIntent.getActivity(this, 0, Intent(this, MainActivity::class.java), PendingIntent.FLAG_UPDATE_CURRENT)) diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/utils/BitmapUtil.kt b/app/src/main/kotlin/jackall/overlaymulticounter/utils/BitmapUtil.kt new file mode 100644 index 0000000..eac83f0 --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/utils/BitmapUtil.kt @@ -0,0 +1,22 @@ +package jackall.overlaymulticounter.utils + +import android.graphics.Bitmap +import android.view.View + +/** + * Created by matsumoto_k on 2017/11/10. + */ +class BitmapUtil { + companion object { + /** + * viewをBitmapに変換する + * @param view BitmapにしたいView + * @return Bitmap + */ + fun viewCapture(view: View): Bitmap { + view.isDrawingCacheEnabled = true + view.destroyDrawingCache() + return view.drawingCache + } + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt index 0ffc3de..6955adc 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt @@ -68,12 +68,12 @@ } } else { AlertDialog.Builder(view.context) - .setMessage("常駐機能を使用するには権限の許可が必要です。") - .setPositiveButton("設定", DialogInterface.OnClickListener { dialog, which -> + .setMessage(view.context.getString(R.string.permit_overlay)) + .setPositiveButton(view.context.getString(R.string.setting), DialogInterface.OnClickListener { dialog, which -> val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:jackall.overlaymulticounter")) (view.context as Activity).startActivityForResult(intent, 0) }) - .setNegativeButton("許可しない", null) + .setNegativeButton(view.context.getString(R.string.cancel), null) .show() } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0aeccc4..41fa719 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -88,6 +88,7 @@ android:text="@string/overlay_minimization" /> #0084ff #ba000000 + #ffffff + #0080ff + #ffff00 + #0000ff + #000000 + #ffffff diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15e3643..14d446b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,4 +8,9 @@ + - RESET + Drawing multi counter over other apps + This button is a start and end button.\nTo minimize, press the close button on the left side of it.\nMinimized button can be moved by long pressing. + Please permit drawing over other apps + Setting + Cancel