小编Emm*_*mos的帖子

Android:在LockScreen上覆盖TextView

概念

我试图在LockScreen上叠加TextView(类似于Android覆盖时间的方式).

注意:我不想绕过锁屏,只是在它上面画画(不干扰任何触摸事件).

我尝试使用以下标志(在onCreate中):

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
    getWindow().addFlags(PixelFormat.TRANSLUCENT);
Run Code Online (Sandbox Code Playgroud)

并应用以下主题(针对特定活动):

   <style name="Transparent">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:backgroundDimEnabled">false</item>
 <item name="android:windowIsFloating">true</item>   
</style>
Run Code Online (Sandbox Code Playgroud)

但这会占据锁定屏幕的TOP,隐藏锁屏并禁用所有触摸事件.

编辑:activity_overlay.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.coco.MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="@android:color/white"
    android:layout_alignParentBottom="true"
    android:text="TextView" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

活动的清单声明(膨胀overlay_activity.xml)

      <activity
        android:name=".DisplayActivity"
        android:label="@string/app_name"
        android:theme="@style/Transparent" />
Run Code Online (Sandbox Code Playgroud)

android overlay textview android-windowmanager

12
推荐指数
1
解决办法
6526
查看次数

使用 LeakCanary 的 AppCompatActivity 内存泄漏

我使用 LeakCanary,不幸的是发生了泄漏,这里是 logcat:

05-10 18:13:00.377    9098-9965/com.ponnex.justdrive D/LeakCanary? In com.ponnex.justdrive:1.0:1.
* com.ponnex.justdrive.DebuggingActivity has leaked:
* GC ROOT static android.support.v4.content.LocalBroadcastManager.mInstance
* references android.support.v4.content.LocalBroadcastManager.mReceivers
* references java.util.HashMap.table
* references array java.util.HashMap$HashMapEntry[].[51]
* references java.util.HashMap$HashMapEntry.key
* references com.ponnex.justdrive.DebuggingActivity$3.this$0 (anonymous class extends android.content.BroadcastReceiver)
* leaks com.ponnex.justdrive.DebuggingActivity instance
* Reference Key: 4fea07d9-9369-4618-a8e0-9e63b3e1b908
* Device: samsung samsung GT-I9100 pa_i9100
* Android Version: 5.1.1 API: 22
* Durations: watch=5219ms, gc=244ms, heap dump=4978ms, analysis=19968ms
Run Code Online (Sandbox Code Playgroud)

这是我的调试活动

@Override
protected void onCreate(Bundle savedInstanceState) {
LeakCanary.install(getApplication());
setContentView(R.layout.activity_debugging);
activityTV = (TextView) findViewById(R.id.debugText);
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(screenReceiver, new …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks leakcanary

1
推荐指数
1
解决办法
2094
查看次数