How do I change the animation used to enter the App Drawer?
Hi
I’m looking for help.
I would like to create shortcuts to my recent contacts in a script. Using tasker and AutoContact, I’m able to build a JSON array containing the contact ID and contact name of the 10 last recent contacts.
The goal is to iterate this JSON array in a script that would build a list of shortcuts to open these contacts and add them in a Panel.
Part of the script I’m using to create the shortcut based on the contact ID:
var contactID = “207”; //to be iterated
var contactName = “My Contact”; //to be iterated
var intent = Intent.parseUri(“content://com.android.contacts/contacts/” + contactID + “#Intent;action=android.provider.action.QUICK_CONTACT;type=vnd.android.cursor.item/contact;launchFlags=0x10018000;B.com.android.launcher.intent.extra.shortcut.INGORE_LAUNCH_ANIMATION=true;end”,0);
var addedShortcut = myPanel.getContainer().addShortcut(contactName ,intent,0,0);
It works fine: the shortcut is created and it opens the contact but I need help to retrieve the icon that corresponds to the contact: sometimes it is a picture, somtimes it is a material icon representing the first letter of the contact name. Any idea how I could achieve this ?
Any hint/idea is welcome!
]]>Adding icon from Chrome to home screen does not work on Oreo.
Window layout got broken with latest release 14.2:
Following code doesn’t pan the screen anymore (when entering an edit text within a custom view on focus change), but did prior to the update:
GetActiveScreen().getContext().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
]]>Last little Bug i found in 2017.
Last little Bug i found in 2017.
The “copy style” option in “editer mode” doesn’t “stick” if one restart LLX. See video.
The “Target” items are on another desktop in a 3×1 Pannel.
]]>Lukas Morawietz I think the app picker from Multitool needs some tuning ;-)

Lukas Morawietz I think the app picker from Multitool needs some tuning 😉
As MultiTool now supports bagdes for all apps, do not make the same mistake I made….

As MultiTool now supports bagdes for all apps, do not make the same mistake I made….
Originally shared by Jappie Toutenhoofd
Do not copy the style from the LL-builtin Badge to a MultiTool-badge. It will break it!
Could someone help me out in changing a dialog box ListView font color and item background color (not the whole…
Could someone help me out in changing a dialog box ListView font color and item background color (not the whole dialog box background color)?
I have been messing around with the dialog boxes, trying to change most of their properties via code, not xml, or layout external files.
So far I have been able to change the title (font size, color, margins), the whole dialog box background, the buttons (font size, color and background color). But no luck so far with the items in a ListView. On my searches, it mostly came down to modifying the ArrayAdapter getView method, but I don’t know how to apply it in LL.
Below is the code for one of my dialog box ListView.
—————————————————————————-
bindClass(“android.app.Dialog”);
bindClass(“android.app.AlertDialog”);
bindClass(“android.content.DialogInterface”);
bindClass(“android.graphics.drawable.ColorDrawable”);
bindClass(“android.view.Gravity”);
//LL.bindClass(“android.R.color”);
//LL.bindClass(“android.graphics.Color”);
//LL.bindClass(“android.app.Activity”);
//LL.bindClass(“android.view.Window”);
//LL.bindClass(“android.view.WindowManager”);
//LL.bindClass(“android.view.ViewGroup.LayoutParams”);
LL.bindClass(“android.widget.LinearLayout”);
LL.bindClass(“android.widget.TextView”);
LL.bindClass(“android.widget.EditText”);
LL.bindClass(“android.text.InputType”);
//LL.bindClass(“android.widget.Adapter”);
LL.bindClass(“android.widget.ArrayAdapter”);
LL.bindClass(“android.widget.ListView”);
LL.bindClass(“android.widget.AdapterView”);
var context = LL.getContext();
var colorBg = 0xAA99AAFF;
var itemsMenu = [“Message”,”List”,”Checkbox List”,”Text Input”,”Custom List”];
var itemsMenuDialog = [dialogMessageShow,dialogListShow,dialogCheckboxShow,dialogTextInputShow,dialogCListShow];
//var myItemsState = [];
var myItems = [“Easy”,”Medium”,”Hard”,”Very Hard”];
//for(var i=0; i //myItemsState[2] = true; dialogMenuShow(); //Android.makeNewToast(“done”, true).show(); //var dialog = new AlertDialog.Builder(context).setMessage(“Hello world”).show(); function dialogButtonHandler(button){ var msg = “”; switch (button) { case Dialog.BUTTON_POSITIVE: msg = “positive”; break; case Dialog.BUTTON_NEGATIVE: msg = “negative”; break; case Dialog.BUTTON_NEUTRAL: msg = “neutral”; break; } msg = button + ” | ” + msg + ” ” + “\n” + “Running again”; Android.makeNewToast(msg,true).show(); } function myText(text){ if (typeof text == undefined){var text=””;} var myTV = new TextView(context); myTV.setText(text); myTV.setTextColor(0xDD00FF99); myTV.setTextSize(22); //title.setBackgroundResource(R.drawable.gradient); myTV.setPadding(10, 10, 10, 10); myTV.setGravity(Gravity.CENTER); return myTV; } function dialogMenuShow(){ var dialogExit = false; var builder = new AlertDialog.Builder(context); //builder.setTitle(“Select the Dialog to show”); builder.setCustomTitle(myText(“Select the Dialog to show:”)); builder.setItems(itemsMenu,new DialogInterface.OnClickListener(){ onClick:function(dialog, indexSelected) {dialog.cancel(); //Android.makeNewToast(itemsMenu[indexSelected],true).show(); //itemsMenuDialog[indexSelected](); //itemsMenuDialog[indexSelected](myItems,myItemsState); switch (indexSelected) { case 0: itemsMenuDialog[indexSelected](myItems.join(“, “)); break; //Message case 1: itemsMenuDialog[indexSelected](myItems); break; //List case 2: //itemsMenuDialog[indexSelected](myItems,myItemsState); itemsMenuDialog[indexSelected](myItems); break; //Checkbox case 3: itemsMenuDialog[indexSelected](“Input some text:”,”sample text”); break; //Text Input case 4: itemsMenuDialog[indexSelected](myItems); break; //Custom List } } }); builder.setPositiveButton(“OK”, new DialogInterface.OnClickListener() { onClick:function(dialog, buttonId) {dialogButtonHandler(buttonId);} }); builder.setNeutralButton(“Test”, new DialogInterface.OnClickListener() { onClick:function(dialog, buttonId) {dialogButtonHandler(buttonId);} }); builder.setNegativeButton(“Close”, new DialogInterface.OnClickListener() { onClick:function(dialog, buttonId) {dialog.cancel();dialogButtonHandler(buttonId);} }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() { onCancel:function(dialog) {dialogExit = true;} }); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { onDismiss:function(dialog) { if (dialogExit) {//dialogMenuShow();{} } else {dialogMenuShow();} //setTimeout(dialogListShow(),0);//shows the list again. On a timeout so the startActivity() is correctly launched before //cancell is called when explicit set, pressing the back key / default action is dismiss / after cancel, dissmiss gets called too } }); var dialog = builder.create(); //dialog.setCancelable(true); //dialog.setCancelable(false); //dialog.setCanceledOnTouchOutside(false); //default = true var window = dialog.getWindow(); window.setBackgroundDrawable(new ColorDrawable(colorBg)); //window.setGravity(Gravity.FILL_VERTICAL); //window.setGravity(Gravity.CENTER); //window.setTextColor(Color.LTGRAY); //window.setTextSize(24); dialog.show(); dialog.getButton(Dialog.BUTTON_POSITIVE).setTextSize(24); dialog.getButton(Dialog.BUTTON_POSITIVE).setTextColor(0xBBDDDDDD); dialog.getButton(Dialog.BUTTON_POSITIVE).setBackgroundColor(0xFF556644); dialog.getButton(Dialog.BUTTON_NEGATIVE).setTextSize(12); //dialog.getButton(Dialog.BUTTON_NEGATIVE).setCustomText(title); //dialog.getButton(Dialog.BUTTON_NEGATIVE).setText(title); //dialog.getButton(Dialog.BUTTON_NEGATIVE).setView(title); //not available dialog.getButton(Dialog.BUTTON_NEUTRAL).setTextSize(24); dialog.getButton(Dialog.BUTTON_NEUTRAL).setTextColor(0xFF0000AA); }





D5 Creation