0% found this document useful (0 votes)
17 views21 pages

Android Floating Menu Customization Guide

The document is a Java class for a customizable floating menu in an Android application. It includes various UI components such as buttons, icons, and settings, and allows for user interaction through touch events. The menu can be expanded or collapsed, and it supports features like saving preferences and loading game libraries.

Uploaded by

enopng2670
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views21 pages

Android Floating Menu Customization Guide

The document is a Java class for a customizable floating menu in an Android application. It includes various UI components such as buttons, icons, and settings, and allows for user interaction through touch events. The menu can be expanded or collapsed, and it supports features like saving preferences and loading game libraries.

Uploaded by

enopng2670
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

//Please don't replace listeners with lambda!

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].Base64;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import static [Link].WRAP_CONTENT;


import static [Link].MATCH_PARENT;
import static [Link].ALIGN_PARENT_LEFT;
import static [Link].ALIGN_PARENT_RIGHT;

import [Link];

public class Menu {


//********** Here you can easly change the menu appearance **********//

//region Variable
public static final String TAG = "Mod_Menu"; //Tag for logcat

int TEXT_COLOR = [Link]("#FFFFFF");


int TEXT_COLOR_2 = [Link]("#FFFFFF");
int BTN_COLOR = [Link]("#1C262D");
int MENU_BG_COLOR = [Link]("#00000000"); //#AARRGGBB
int MENU_FEATURE_BG_COLOR = [Link]("#00000000"); //#AARRGGBB
int MENU_WIDTH = 240;
int MENU_HEIGHT = 270;
int POS_X = 0;
int POS_Y = 100;

float MENU_CORNER = 24f;


int ICON_SIZE = 75; //Change both width and height of image
float ICON_ALPHA = 0.7f; //Transparent
int ToggleON = [Link];
int ToggleOFF = [Link];
int BtnON = [Link]("#1b5e20");
int BtnOFF = [Link]("#7f0000");
int CategoryBG = [Link]("#2F3D4C");
int SeekBarColor = [Link]("#80CBC4");
int SeekBarProgressColor = [Link]("#80CBC4");
int CheckBoxColor = [Link]("#80CBC4");
int RadioColor = [Link]("#FFFFFF");
String NumberTxtColor = "#41c300";
//********************************************************************//

RelativeLayout mCollapsed, mRootContainer;


LinearLayout mExpanded, mods, mSettings, mCollapse;
[Link] scrlLLExpanded, scrlLL;
WindowManager mWindowManager;
[Link] vmParams;
ImageView startimage;
FrameLayout rootFrame;
ScrollView scrollView;
boolean stopChecking, overlayRequired;
Context getContext;

//initialize methods from the native library


native void Init(Context context, TextView title, TextView subTitle);

native String Icon();

native String IconWebViewData();


native String[] GetFeatureList();

native String[] SettingsList();

native boolean IsGameLibLoaded();

//Here we write the code for our Menu


// Reference: [Link]
like-facebook-chat-head/
public Menu(Context context) {

getContext = context;
[Link] = context;
rootFrame = new FrameLayout(context); // Global markup
[Link](onTouchListener());
mRootContainer = new RelativeLayout(context); // Markup on which two
markups of the icon and the menu itself will be placed
mCollapsed = new RelativeLayout(context); // Markup of the icon (when the
menu is minimized)
[Link]([Link]);
[Link](ICON_ALPHA);

//********** The box of the mod menu **********


mExpanded = new LinearLayout(context); // Menu markup (when the menu is
expanded)
[Link]([Link]);
[Link](MENU_BG_COLOR);
[Link]([Link]);
// [Link](1, 1, 1, 1); //So borders would be visible
[Link](new [Link](dp(MENU_WIDTH),
WRAP_CONTENT));
GradientDrawable gdMenuBody = new GradientDrawable();
[Link](MENU_CORNER); //Set corner
[Link](MENU_BG_COLOR); //Set background color
[Link](8, [Link]("#000000")); //Set border
//[Link](gdMenuBody); //Apply GradientDrawable to it

try {
InputStream ims = [Link]().open("[Link]");
Drawable d = [Link](ims, null);
[Link](d);
} catch(IOException ex) {

//********** The icon to open mod menu **********


startimage = new ImageView(context);
[Link](new [Link](WRAP_CONTENT,
WRAP_CONTENT));
int applyDimension = (int) [Link](1, ICON_SIZE,
[Link]().getDisplayMetrics()); //Icon size
[Link]().height = applyDimension;
[Link]().width = applyDimension;
//[Link]();
[Link]([Link].FIT_XY);
byte[] decode = [Link](Icon(), 0);
[Link]([Link](decode, 0,
[Link]));
(([Link]) [Link]()).topMargin =
convertDipToPixels(10);
//Initialize event handlers for buttons, etc.
[Link](onTouchListener());
[Link](new [Link]() {
public void onClick(View view) {
[Link]([Link]);
[Link]([Link]);
}
});

//********** The icon in Webview to open mod menu **********


WebView wView = new WebView(context); //Icon size width=\"50\"
height=\"50\"
[Link](new [Link](WRAP_CONTENT,
WRAP_CONTENT));
int applyDimension2 = (int) [Link](1, ICON_SIZE,
[Link]().getDisplayMetrics()); //Icon size
[Link]().height = applyDimension2;
[Link]().width = applyDimension2;
[Link]("<html>" +
"<head></head>" +
"<body style=\"margin: 0; padding: 0\">" +
"<img src=\"" + IconWebViewData() + "\" width=\"" + ICON_SIZE + "\"
height=\"" + ICON_SIZE + "\" >" +
"</body>" +
"</html>", "text/html", "utf-8");
[Link](0x00000000); //Transparent
[Link](ICON_ALPHA);
[Link]().setAppCacheEnabled(true);
[Link](onTouchListener());

//********** Settings icon **********


TextView settings = new TextView(context); //Android 5 can't show ⚙,
instead show other icon instead
[Link]([Link].SDK_INT >=
[Link].VERSION_CODES.M ? "⚙" : "\uD83D\uDD27");
[Link](TEXT_COLOR);
[Link](Typeface.DEFAULT_BOLD);
[Link](20.0f);
[Link] rlsettings = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](ALIGN_PARENT_RIGHT);
[Link](rlsettings);
[Link](new [Link]() {
boolean settingsOpen;

@Override
public void onClick(View v) {
try {
settingsOpen = !settingsOpen;
if (settingsOpen) {
[Link](mods);
[Link](mSettings);
[Link](0, 0);
} else {
[Link](mSettings);
[Link](mods);
}
} catch (IllegalStateException e) {
}
}
});

//********** Settings **********


mSettings = new LinearLayout(context);
[Link]([Link]);
featureList(SettingsList(), mSettings);

//********** Title **********


RelativeLayout titleText = new RelativeLayout(context);
[Link](10, 5, 10, 5);
[Link](16);

TextView title = new TextView(context);


[Link](TEXT_COLOR);
[Link](18.0f);
[Link]([Link]);
[Link] rl = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](RelativeLayout.CENTER_HORIZONTAL);
[Link](rl);

//********** Sub title **********


TextView subTitle = new TextView(context);
[Link]([Link]);
[Link](-1);
[Link](true);
[Link](true);
[Link](TEXT_COLOR);
[Link](10.0f);
[Link]([Link]);
[Link](0, 0, 0, 5);

//********** Mod menu feature list **********


scrollView = new ScrollView(context);
//Auto size. To set size manually, change the width and height example 500,
500
scrlLL = new [Link](MATCH_PARENT, dp(MENU_HEIGHT));
scrlLLExpanded = new
[Link]([Link]());
[Link] = 1.0f;
[Link]([Link] ? scrlLLExpanded :
scrlLL);
[Link](MENU_FEATURE_BG_COLOR);
mods = new LinearLayout(context);
[Link]([Link]);

//********** RelativeLayout for buttons **********


RelativeLayout relativeLayout = new RelativeLayout(context);
[Link](10, 3, 10, 3);
[Link]([Link]);

//********** Hide/Kill button **********


[Link] lParamsHideBtn = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](ALIGN_PARENT_LEFT);
Button hideBtn = new Button(context);
[Link](lParamsHideBtn);
[Link]([Link]);
[Link]("HIDE/KILL");
[Link](TEXT_COLOR);
[Link](new [Link]() {
public void onClick(View view) {
[Link]([Link]);
[Link](0);
[Link]([Link]);
[Link]([Link](), "Icon hidden. Remember the hidden
icon position", Toast.LENGTH_LONG).show();
}
});
[Link](new [Link]() {
public boolean onLongClick(View view) {
[Link]([Link](), "Menu killed",
Toast.LENGTH_LONG).show();
[Link](mRootContainer);
[Link](rootFrame);
return false;
}
});

//********** Close button **********


[Link] lParamsCloseBtn = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](ALIGN_PARENT_RIGHT);

Button closeBtn = new Button(context);


[Link](lParamsCloseBtn);
[Link]([Link]);
[Link]("MINIMIZE");
[Link](TEXT_COLOR);
[Link](new [Link]() {
public void onClick(View view) {
[Link]([Link]);
[Link](ICON_ALPHA);
[Link]([Link]);
}
});

//********** Adding view components **********


[Link](mCollapsed);
[Link](mExpanded);
if (IconWebViewData() != null) {
[Link](wView);
} else {
[Link](startimage);
}
[Link](title);
[Link](settings);
[Link](titleText);
[Link](subTitle);
[Link](mods);
[Link](scrollView);
[Link](hideBtn);
[Link](closeBtn);
[Link](relativeLayout);
Init(context, title, subTitle);
}

public void ShowMenu() {


[Link](mRootContainer);

final Handler handler = new Handler();


[Link](new Runnable() {
boolean viewLoaded = false;

@Override
public void run() {
//If the save preferences is enabled, it will check if game lib is
loaded before starting menu
//Comment the if-else code out except startService if you want to
run the app and test preferences
if ([Link] && !IsGameLibLoaded() && !stopChecking) {
if (!viewLoaded) {
Category(mods, "Save preferences was been enabled. Waiting
for game lib to be loaded...\n\nForce load menu may not apply mods instantly. You
would need to reactivate them again");
Button(mods, -100, "Force load menu");
viewLoaded = true;
}
[Link](this, 600);
} else {
[Link]();
featureList(GetFeatureList(), mods);
}
}
}, 500);
}

@SuppressLint("WrongConstant")
public void SetWindowManagerWindowService() {
//Variable to check later if the phone supports Draw over other apps
permission
int iparams = [Link].SDK_INT >= [Link].VERSION_CODES.O ?
2038 : 2002;
vmParams = new [Link](WRAP_CONTENT, WRAP_CONTENT,
iparams, 8, -3);
//params = new
[Link]([Link].LAST_APPLICATION_WINDOW, 8, -
3);
[Link] = 51;
vmParams.x = POS_X;
vmParams.y = POS_Y;

mWindowManager = (WindowManager)
[Link](getContext.WINDOW_SERVICE);
[Link](rootFrame, vmParams);

overlayRequired = true;
}

@SuppressLint("WrongConstant")
public void SetWindowManagerActivity() {
vmParams = new [Link](
[Link].WRAP_CONTENT,
[Link].WRAP_CONTENT,
POS_X,//initialX
POS_Y,//initialy
[Link].TYPE_APPLICATION,
[Link].FLAG_NOT_FOCUSABLE |
[Link].FLAG_LAYOUT_IN_OVERSCAN |
[Link].FLAG_LAYOUT_IN_SCREEN |
[Link].FLAG_SPLIT_TOUCH,
[Link]
);
[Link] = 51;
vmParams.x = POS_X;
vmParams.y = POS_Y;

mWindowManager = ((Activity) getContext).getWindowManager();


[Link](rootFrame, vmParams);
}

private [Link] onTouchListener() {


return new [Link]() {
final View collapsedView = mCollapsed;
final View expandedView = mExpanded;
private float initialTouchX, initialTouchY;
private int initialX, initialY;

public boolean onTouch(View view, MotionEvent motionEvent) {


switch ([Link]()) {
case MotionEvent.ACTION_DOWN:
initialX = vmParams.x;
initialY = vmParams.y;
initialTouchX = [Link]();
initialTouchY = [Link]();
return true;
case MotionEvent.ACTION_UP:
int rawX = (int) ([Link]() - initialTouchX);
int rawY = (int) ([Link]() - initialTouchY);
[Link](1f);
[Link](1f);
//The check for Xdiff <10 && YDiff< 10 because sometime
elements moves a little while clicking.
//So that is click event.
if (rawX < 10 && rawY < 10 && isViewCollapsed()) {
//When user clicks on the image view of the collapsed
layout,
//visibility of the collapsed layout will be changed to
"[Link]"
//and expanded view will become visible.
try {
[Link]([Link]);
[Link]([Link]);
} catch (NullPointerException e) {

}
}
return true;
case MotionEvent.ACTION_MOVE:
[Link](0.5f);
[Link](0.5f);
//Calculate the X and Y coordinates of the view.
vmParams.x = initialX + ((int) ([Link]() -
initialTouchX));
vmParams.y = initialY + ((int) ([Link]() -
initialTouchY));
//Update the layout with new X & Y coordinate
[Link](rootFrame, vmParams);
return true;
default:
return false;
}
}
};
}

private void featureList(String[] listFT, LinearLayout linearLayout) {


//Currently looks messy right now. Let me know if you have improvements
int featNum, subFeat = 0;
LinearLayout llBak = linearLayout;

for (int i = 0; i < [Link]; i++) {


boolean switchedOn = false;
//Log.i("featureList", listFT[i]);
String feature = listFT[i];
if ([Link]("_True")) {
switchedOn = true;
feature = [Link]("_True", "");
}

linearLayout = llBak;
if ([Link]("CollapseAdd_")) {
//if (collapse != null)
linearLayout = mCollapse;
feature = [Link]("CollapseAdd_", "");
}
String[] str = [Link]("_");

//Assign feature number


if ([Link](str[0]) || str[0].matches("-[0-9]*")) {
featNum = [Link](str[0]);
feature = [Link](str[0] + "_", "");
subFeat++;
} else {
//Subtract feature number. We don't want to count ButtonLink,
Category, RichTextView and RichWebView
featNum = i - subFeat;
}
String[] strSplit = [Link]("_");
switch (strSplit[0]) {
case "Toggle":
Switch(linearLayout, featNum, strSplit[1], switchedOn);
break;
case "SeekBar":
SeekBar(linearLayout, featNum, strSplit[1],
[Link](strSplit[2]), [Link](strSplit[3]));
break;
case "Button":
Button(linearLayout, featNum, strSplit[1]);
break;
case "ButtonOnOff":
ButtonOnOff(linearLayout, featNum, strSplit[1], switchedOn);
break;
case "Spinner":
TextView(linearLayout, strSplit[1]);
Spinner(linearLayout, featNum, strSplit[1], strSplit[2]);
break;
case "InputText":
InputText(linearLayout, featNum, strSplit[1]);
break;
case "InputValue":
if ([Link] == 3)
InputNum(linearLayout, featNum, strSplit[2],
[Link](strSplit[1]));
if ([Link] == 2)
InputNum(linearLayout, featNum, strSplit[1], 0);
break;
case "CheckBox":
CheckBox(linearLayout, featNum, strSplit[1], switchedOn);
break;
case "RadioButton":
RadioButton(linearLayout, featNum, strSplit[1], strSplit[2]);
break;
case "Collapse":
Collapse(linearLayout, strSplit[1], switchedOn);
subFeat++;
break;
case "ButtonLink":
subFeat++;
ButtonLink(linearLayout, strSplit[1], strSplit[2]);
break;
case "Category":
subFeat++;
Category(linearLayout, strSplit[1]);
break;
case "RichTextView":
subFeat++;
TextView(linearLayout, strSplit[1]);
break;
case "RichWebView":
subFeat++;
WebTextView(linearLayout, strSplit[1]);
break;
}
}
}

private void Switch(LinearLayout linLayout, final int featNum, final String


featName, boolean swiOn) {
final Switch switchR = new Switch(getContext);
final GradientDrawable THUMB = new GradientDrawable();
[Link](1);
[Link](40,40);

final GradientDrawable TRACK = new GradientDrawable();


[Link](100);
[Link](20,20);

boolean isOn = [Link](featName, featNum, swiOn);


if(isOn){
[Link](BTN_COLOR);
[Link](2,BTN_COLOR);

[Link]([Link]("#AB143568"));
[Link](2, BTN_COLOR);
}
else{
[Link]([Link]);
[Link](2,BTN_COLOR);

[Link]([Link](200,255,255,255));
[Link](2, BTN_COLOR);
}

[Link](featName);
[Link](TEXT_COLOR_2);
[Link](THUMB);
[Link](TRACK);
[Link](10, 5, 0, 5);
[Link]([Link](featName, featNum, swiOn));
[Link](new
[Link]() {
public void onCheckedChanged(CompoundButton compoundButton, boolean
bool) {
[Link](featName, featNum, bool);
if(bool){
[Link](BTN_COLOR);
[Link](2,BTN_COLOR);

[Link]([Link]("#AB143568"));
[Link](2, BTN_COLOR);
}
else{
[Link]([Link]);
[Link](2,BTN_COLOR);

[Link]([Link](200,255,255,255));
[Link](2, BTN_COLOR);
}
switch (featNum) {
case -1: //Save perferences
[Link]([Link]()).writeBoolean(-1,
bool);
if (bool == false)
[Link]([Link]()).clear(); //Clear
perferences if switched off
break;
case -3:
[Link] = bool;
[Link](bool ? scrlLLExpanded : scrlLL);
break;

}
}
});

[Link](switchR);
}
private void SeekBar(LinearLayout linLayout, final int featNum, final String
featName, final int min, int max) {
int loadedProg = [Link](featName, featNum);
LinearLayout linearLayout = new LinearLayout(getContext);
[Link](10, 5, 0, 5);
[Link]([Link]);
[Link]([Link]);

final TextView textView = new TextView(getContext);


[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + ((loadedProg == 0) ? min : loadedProg)));
[Link](TEXT_COLOR_2);

SeekBar seekBar = new SeekBar(getContext);


[Link](25, 10, 35, 10);
[Link](max);
if ([Link].SDK_INT >= Build.VERSION_CODES.O)
[Link](min); //setMin for Oreo and above
[Link]((loadedProg == 0) ? min : loadedProg);
[Link]().setColorFilter(SeekBarColor, [Link].SRC_ATOP);
[Link]().setColorFilter(SeekBarProgressColor,
[Link].SRC_ATOP);
[Link](new [Link]() {
public void onStartTrackingTouch(SeekBar seekBar) {
}

public void onStopTrackingTouch(SeekBar seekBar) {


}

public void onProgressChanged(SeekBar seekBar, int i, boolean z) {


//if progress is greater than minimum, don't go below. Else, set
progress
[Link](i < min ? min : i);
[Link](featName, featNum, i < min ? min : i);
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + (i < min ? min : i)));
}
});
[Link](textView);
[Link](seekBar);

[Link](linearLayout);
}

private void Button(LinearLayout linLayout, final int featNum, final String


featName) {
final Button button = new Button(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
[Link](layoutParams);
[Link](TEXT_COLOR_2);
[Link](false); //Disable caps to support html
[Link]([Link](featName));
[Link](BTN_COLOR);
[Link](new [Link]() {
public void onClick(View v) {
switch (featNum) {

case -6:
[Link](mSettings);
[Link](mods);
break;
case -100:
stopChecking = true;
break;
}
[Link](featName, featNum, 0);
}
});

[Link](button);
}

private void ButtonLink(LinearLayout linLayout, final String featName, final


String url) {
final Button button = new Button(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
[Link](layoutParams);
[Link](false); //Disable caps to support html
[Link](TEXT_COLOR_2);
[Link]([Link](featName));
[Link](BTN_COLOR);
[Link](new [Link]() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
[Link](Intent.FLAG_ACTIVITY_NEW_TASK);
[Link]([Link](url));
[Link](intent);
}
});
[Link](button);
}

private void ButtonOnOff(LinearLayout linLayout, final int featNum, String


featName, boolean switchedOn) {
final Button button = new Button(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
[Link](layoutParams);
[Link](TEXT_COLOR_2);
[Link](false); //Disable caps to support html

final String finalfeatName = [Link]("OnOff_", "");


boolean isOn = [Link](featName, featNum, switchedOn);
if (isOn) {
[Link]([Link](finalfeatName + ": ON"));
[Link](BtnON);
isOn = false;
} else {
[Link]([Link](finalfeatName + ": OFF"));
[Link](BtnOFF);
isOn = true;
}
final boolean finalIsOn = isOn;
[Link](new [Link]() {
boolean isOn = finalIsOn;

public void onClick(View v) {


[Link](finalfeatName, featNum, isOn);
//Log.d(TAG, finalfeatName + " " + featNum + " " + isActive2);
if (isOn) {
[Link]([Link](finalfeatName + ": ON"));
[Link](BtnON);
isOn = false;
} else {
[Link]([Link](finalfeatName + ": OFF"));
[Link](BtnOFF);
isOn = true;
}
}
});
[Link](button);
}

private void Spinner(LinearLayout linLayout, final int featNum, final String


featName, final String list) {
Log.d(TAG, "spinner " + featNum + " " + featName + " " + list);
final List<String> lists = new
LinkedList<>([Link]([Link](",")));

// Create another LinearLayout as a workaround to use it as a background


// to keep the down arrow symbol. No arrow symbol if setBackgroundColor set
LinearLayout linearLayout2 = new LinearLayout(getContext);
[Link] layoutParams2 = new
[Link](MATCH_PARENT, WRAP_CONTENT);
[Link](7, 2, 7, 2);
[Link]([Link]);
[Link](BTN_COLOR);
[Link](layoutParams2);

final Spinner spinner = new Spinner(getContext, Spinner.MODE_DROPDOWN);


[Link](layoutParams2);
[Link]().setColorFilter(1, [Link].SRC_ATOP);
//trick to show white down arrow color
//Creating the ArrayAdapter instance having the list
ArrayAdapter aa = new ArrayAdapter(getContext,
[Link].simple_spinner_dropdown_item, lists);
[Link]([Link].simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner'
[Link](aa);
[Link]([Link](featName, featNum));
[Link](new [Link]()
{
@Override
public void onItemSelected(AdapterView<?> parentView, View
selectedItemView, int position, long id) {
[Link]([Link]().toString(),
featNum, position);
((TextView) [Link](0)).setTextColor(TEXT_COLOR_2);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
[Link](spinner);
[Link](linearLayout2);
}

private void InputNum(LinearLayout linLayout, final int featNum, final String


featName, final int maxValue) {
LinearLayout linearLayout = new LinearLayout(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);

final Button button = new Button(getContext);


int num = [Link](featName, featNum);
[Link]([Link](featName + ": <font color='" + NumberTxtColor
+ "'>" + ((num == 0) ? 1 : num) + "</font>"));
[Link](false);
[Link](layoutParams);
[Link](BTN_COLOR);
[Link](TEXT_COLOR_2);
[Link](new [Link]() {
@Override
public void onClick(View view) {
[Link] alertName = new
[Link](getContext);
final EditText editText = new EditText(getContext);
if (maxValue != 0)
[Link]("Max value: " + maxValue);
[Link](InputType.TYPE_CLASS_NUMBER);

[Link]([Link]("0123456789-"));
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new [Link](10);
[Link](FilterArray);
[Link](new [Link]()
{
@Override
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
if (hasFocus) {
[Link](InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
} else {

[Link](InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
[Link]();

[Link]("Input number");
[Link](editText);
LinearLayout layoutName = new LinearLayout(getContext);
[Link]([Link]);
[Link](editText); // displays the user input bar
[Link](layoutName);

[Link]("OK", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
int num;
try {
num =
[Link]([Link]([Link]().toString()) ? "0" :
[Link]().toString());
if (maxValue != 0 && num >= maxValue)
num = maxValue;
} catch (NumberFormatException ex) {
if (maxValue != 0)
num = maxValue;
else
num = 2147483640;
}

[Link]([Link](featName + ": <font color='" +


NumberTxtColor + "'>" + num + "</font>"));
[Link](featName, featNum, num);

[Link](false);
}
});

[Link]("Cancel", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
// [Link](); // closes dialog
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
[Link](InputMethodManager.HIDE_IMPLICIT_ONLY,
0);
}
});

if (overlayRequired) {
AlertDialog dialog = [Link](); // display the dialog
[Link]().setType([Link].SDK_INT >= 26 ? 2038 :
2002);
[Link]();
} else {
[Link]();
}
}
});

[Link](button);
[Link](linearLayout);
}

private void InputText(LinearLayout linLayout, final int featNum, final String


featName) {
LinearLayout linearLayout = new LinearLayout(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
final Button button = new Button(getContext);

String string = [Link](featName, featNum);


[Link]([Link](featName + ": <font color='" + NumberTxtColor
+ "'>" + string + "</font>"));

[Link](false);
[Link](layoutParams);
[Link](BTN_COLOR);
[Link](TEXT_COLOR_2);
[Link](new [Link]() {
@Override
public void onClick(View view) {
[Link] alertName = new
[Link](getContext);

final EditText editText = new EditText(getContext);


[Link](new [Link]()
{
@Override
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
if (hasFocus) {
[Link](InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
} else {

[Link](InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
[Link]();

[Link]("Input text");
[Link](editText);
LinearLayout layoutName = new LinearLayout(getContext);
[Link]([Link]);
[Link](editText); // displays the user input bar
[Link](layoutName);

[Link]("OK", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
String str = [Link]().toString();
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + str + "</font>"));
[Link](featName, featNum, str);
[Link](false);
}
});

[Link]("Cancel", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
//[Link](); // closes dialog
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
[Link](InputMethodManager.HIDE_IMPLICIT_ONLY,
0);
}
});

if (overlayRequired) {
AlertDialog dialog = [Link](); // display the dialog
[Link]().setType([Link].SDK_INT >= 26 ? 2038 :
2002);
[Link]();
} else {
[Link]();
}
}
});

[Link](button);
[Link](linearLayout);
}

private void CheckBox(LinearLayout linLayout, final int featNum, final String


featName, boolean switchedOn) {
final CheckBox checkBox = new CheckBox(getContext);
[Link](featName);
[Link](TEXT_COLOR_2);
if ([Link].SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
[Link]([Link](CheckBoxColor));
[Link]([Link](featName, featNum,
switchedOn));
[Link](new
[Link]() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if ([Link]()) {
[Link](featName, featNum, isChecked);
} else {
[Link](featName, featNum, isChecked);
}
}
});
[Link](checkBox);
}

private void RadioButton(LinearLayout linLayout, final int featNum, String


featName, final String list) {
//Credit: LoraZalora
final List<String> lists = new
LinkedList<>([Link]([Link](",")));

final TextView textView = new TextView(getContext);


[Link](featName + ":");
[Link](TEXT_COLOR_2);

final RadioGroup radioGroup = new RadioGroup(getContext);


[Link](10, 5, 10, 5);
[Link]([Link]);
[Link](textView);
for (int i = 0; i < [Link](); i++) {
final RadioButton Radioo = new RadioButton(getContext);
final String finalfeatName = featName, radioName = [Link](i);
[Link] first_radio_listener = new [Link]()
{
public void onClick(View v) {
[Link]([Link](finalfeatName + ": <font
color='" + NumberTxtColor + "'>" + radioName));
[Link](finalfeatName, featNum,
[Link](Radioo));
}
};
[Link]([Link](i));
[Link]([Link](i));
[Link]([Link]);
if ([Link].SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
[Link]([Link](RadioColor));
[Link](first_radio_listener);
[Link](Radioo);
}

int index = [Link](featName, featNum);


if (index > 0) { //Preventing it to get an index less than 1. below 1 =
null = crash
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + [Link](index - 1)));
((RadioButton) [Link](index)).setChecked(true);
}
[Link](radioGroup);
}

private void Collapse(LinearLayout linLayout, final String text, final boolean


expanded) {
[Link] layoutParamsLL = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](0, 5, 0, 0);

LinearLayout collapse = new LinearLayout(getContext);


[Link](layoutParamsLL);
[Link](16);
[Link]([Link]);

final LinearLayout collapseSub = new LinearLayout(getContext);


[Link](16);
[Link](0, 5, 0, 5);
[Link]([Link]);
[Link]([Link]("#222D38"));
[Link]([Link]);
mCollapse = collapseSub;

final TextView textView = new TextView(getContext);


[Link](CategoryBG);
[Link]("▽ " + text + " ▽");
[Link]([Link]);
[Link](TEXT_COLOR_2);
[Link](null, [Link]);
[Link](0, 20, 0, 20);
if (expanded) {
[Link]([Link]);
[Link]("△ " + text + " △");
}

[Link](new [Link]() {
boolean isChecked = expanded;

@Override
public void onClick(View v) {

boolean z = !isChecked;
isChecked = z;
if (z) {
[Link]([Link]);
[Link]("△ " + text + " △");
return;
}
[Link]([Link]);
[Link]("▽ " + text + " ▽");
}
});
[Link](textView);
[Link](collapseSub);
[Link](collapse);
}

private void Category(LinearLayout linLayout, String text) {


TextView textView = new TextView(getContext);
[Link](CategoryBG);
[Link]([Link](text));
[Link]([Link]);
[Link](TEXT_COLOR_2);
[Link](null, [Link]);
[Link](0, 5, 0, 5);
[Link](textView);
}

private void TextView(LinearLayout linLayout, String text) {


TextView textView = new TextView(getContext);
[Link]([Link](text));
[Link](TEXT_COLOR_2);
[Link](10, 5, 10, 5);
[Link](textView);
}

private void WebTextView(LinearLayout linLayout, String text) {


WebView wView = new WebView(getContext);
[Link](text, "text/html", "utf-8");
[Link](0x00000000); //Transparent
[Link](0, 5, 0, 5);
[Link]().setAppCacheEnabled(false);
[Link](wView);
}

private boolean isViewCollapsed() {


return rootFrame == null || [Link]() == [Link];
}
//For our image a little converter
private int convertDipToPixels(int i) {
return (int) ((((float) i) *
[Link]().getDisplayMetrics().density) + 0.5f);
}

private int dp(int i) {


return (int) [Link](TypedValue.COMPLEX_UNIT_DIP, (float)
i, [Link]().getDisplayMetrics());
}

public void setVisibility(int view) {


if (rootFrame != null) {
[Link](view);
}
}

public void onDestroy() {


if (rootFrame != null) {
[Link](rootFrame);
}
}
}

You might also like