Well, there is a solution for registering everything you want to use using this lib. This did not work for me, so I developed my own solution, and you can find an example here . It's really simple, just add the OnScreenLog class to your project
package br.com.ideiageni.onscreenlogSample; import android.app.Activity; import android.graphics.Color; import android.os.Handler; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; public class OnScreenLog { private static int timeoutTime = 1000; private static TextView tvLog; private static int logCount = 0; private static int logCountMax = 30; private static String[] logs = new String[logCountMax]; private static int cntClicks = 0; private static boolean visibility = false; private static Activity activity; private int maxClicks = 5; public OnScreenLog(){} public OnScreenLog(Activity activity, int ViewID){ OnScreenLog.activity = activity; tvLog = new TextView(activity.getApplicationContext()); maintainLog("Log is working"); tvLog.setLayoutParams(new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); tvLog.setTextColor(Color.BLACK); tvLog.setBackgroundColor(Color.LTGRAY); tvLog.setAlpha((float) 0.4); View v = null; LinearLayout linearLayout; RelativeLayout relativeLayout; try { linearLayout = (LinearLayout) activity.findViewById(ViewID); } catch (ClassCastException e) {linearLayout = null;}; try { relativeLayout = (RelativeLayout) activity.findViewById(ViewID); } catch (ClassCastException e) {relativeLayout = null;}; if(linearLayout != null) { linearLayout.addView(tvLog); v = linearLayout; } else if(relativeLayout != null) { relativeLayout.addView(tvLog); v = relativeLayout; } if(v != null) { v.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: cntClicks++; timerHandler.removeCallbacks(rTimeout); timerHandler.postDelayed(rTimeout, timeoutTime); if (cntClicks > maxClicks-1) { setLogVisible(!visibility); timerHandler.removeCallbacks(rTimeout); cntClicks = 0; } break; } return false; } }); } } public void log (String text){ String logText = text; maintainLog(logText); } public void log (int text){ String logText = String.valueOf(text); maintainLog(logText); } public void log (int[] text){ StringBuilder builder = new StringBuilder(); for (int i : text) { builder.append(i); builder.append("-"); } String logText = builder.toString(); maintainLog(logText); } public void log (byte[] text){ StringBuilder builder = new StringBuilder(); for (int i : text) { builder.append(i); builder.append("-"); } String logText = builder.toString(); maintainLog(logText); } private void maintainLog(String newText){ String logText = ""; if(logCount<logCountMax) logCount++; for(int i=logCount-1; i>0; i--){ logs[i] = logs[i-1]; } logs[0] = newText; for(int i=0; i<logCount; i++){ if(i<logCount-1) logText+=logs[i]+System.getProperty("line.separator"); else logText+=logs[i]; } tvLog.setText(logText); } public void clearLog(){ tvLog.setText(""); } public void setLogVisible(boolean visibility){ if(visibility) tvLog.setVisibility(View.VISIBLE); else tvLog.setVisibility(View.INVISIBLE); OnScreenLog.visibility = visibility; } public static int getLogCountMax() { return logCountMax; } public static void setLogCountMax(int logCountMax) { OnScreenLog.logCountMax = logCountMax; logs = new String[logCountMax]; } public int getMaxClicks() { return maxClicks; } public void setMaxClicks(int maxClicks) { this.maxClicks = maxClicks; } Handler timerHandler = new Handler(); Runnable rTimeout = new Runnable() { @Override public void run() { cntClicks = 0; } }; }
then for example:
public class Activity1 extends AppCompatActivity { private OnScreenLog log; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_1); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); log = new OnScreenLog(this, R.id.content_1); log.log("Started log on Activity 1"); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(getApplicationContext(), Activity2.class); startActivity(intent); log.log("Starting Activity 2"); Snackbar.make(view, "Starting Activity 2", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); }
Where R.id.content_1 is the name of the main LinearLayout or RelativeLayout of your activity.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/content_1" 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" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="br.com.ideiageni.onscreenlogSample.Activity1" tools:showIn="@layout/activity_1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Activity 1!" /> </RelativeLayout>
The work is not finished yet, but can be used for everyone who needs it. Some guidance on how to use is missing. Suggestions are welcome.
source share