[
  {
    "id": "207",
    "title": "\u003cArrayableArray 2\u003e",
    "about": "",
    "code": "class ArrayableArray extends ArrayList\u003cObject\u003e { \r\n public Class type; \r\n public ArrayableArray parent; \r\n public ArrayableArray(Class type) { \r\n this.type \u003d type; \r\n } \r\n public ArrayableArray() { \r\n this.type \u003d Integer.class; \r\n } \r\n @Override \r\n public boolean add(Object obj) { \r\n if(obj.getClass() \u003d\u003d this.type) { \r\n super.add(obj); \r\n } else { \r\n if(obj instanceof ArrayableArray) { \r\n ArrayableArray arr \u003d (ArrayableArray)obj; \r\n if(arr.type \u003d\u003d this.type) { \r\n super.add(arr); \r\n arr.parent \u003d this; \r\n } else { \r\n throw new IllegalArgumentException(\"Given array type does not match the parent Array type. Given type:\"\".concat(arr.type.toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } else { \r\n throw new IllegalArgumentException(\"Given value type does not match the Array value type. Given type:\"\".concat(obj.getClass().toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } \r\n return true; \r\n } \r\n @Override \r\n public void add(int index,Object obj){ \r\n if(obj.getClass() \u003d\u003d this.type) { \r\n super.add(index,obj); \r\n } else { \r\n if(obj instanceof ArrayableArray) { \r\n ArrayableArray arr \u003d (ArrayableArray)obj; \r\n if(arr.type \u003d\u003d this.type) { \r\n super.add(index,arr); \r\n arr.parent \u003d this; \r\n } else { \r\n throw new IllegalArgumentException(\"Given array type does not match the parent Array type. Given type:\"\".concat(arr.type.toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } else { \r\n throw new IllegalArgumentException(\"Given value type does not match the Array value type. Given type:\"\".concat(obj.getClass().toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } \r\n } \r\n public String toJSON() { \r\n String str \u003d null; \r\n try{ \r\n Gson gson \u003d new Gson(); \r\n JsonElement jsonArray \u003d gson.toJsonTree(this, new TypeToken\u003cList\u003cObject() {}.getType()); \r\n str \u003d jsonArray.toString(); \r\n } catch(NoClassDefFoundError e) { \r\n println(\"GSON not defined.cannot convert array to json\"); \r\n } \r\n return str; \r\n } \r\n public ArrayableArray getArray(int index) { \r\n ArrayableArray ret; \r\n if(super.get(index) instanceof ArrayableArray) { \r\n ret \u003d (ArrayableArray)super.get(index); \r\n } else { \r\n throw new IllegalArgumentException(\"Excepted:\"\".concat(this.getClass().toString()).concat(\"\",but got:\"\").concat(super.get(index).getClass().toString()).concat(\"\"\")); \r\n } \r\n return ret; \r\n } \r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "206",
    "title": "\u003cArrayableArray\u003e",
    "about": "GSON library is required, if for some reason you cannot import this library, delete the toJSON () method The library will no longer be needed, but then you will lose the ability to convert the list into a JSON string  This is a list that can store both values and other lists.  The list can store any type of values, but only the one that was set in the original list (in fact, it is easy to manage, but it\u0027s better not to risk it) The code was tested in Processing 3 (A program using Java-based language, so that for those who know Java, this program will be easy) and everything works perfectly ...",
    "code": "class ArrayableArray extends ArrayList\u003cObject\u003e { \r\n public Class type; \r\n public ArrayableArray(Class type) { \r\n this.type \u003d type; \r\n } \r\n public ArrayableArray() { \r\n this.type \u003d Integer.class; \r\n } \r\n @Override \r\n public boolean add(Object obj) { \r\n if(obj.getClass() \u003d\u003d this.type) { \r\n super.add(obj); \r\n } else { \r\n if(obj instanceof ArrayableArray) { \r\n ArrayableArray arr \u003d (ArrayableArray)obj; \r\n if(arr.type \u003d\u003d this.type) { \r\n super.add(obj); \r\n } else { \r\n throw new IllegalArgumentException(\"Given array type does not match the parent Array type. Given type:\"\".concat(arr.type.toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } else { \r\n throw new IllegalArgumentException(\"Given value type does not match the Array value type. Given type:\"\".concat(obj.getClass().toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } \r\n return true; \r\n } \r\n @Override \r\n public void add(int index,Object obj){ \r\n if(obj.getClass() \u003d\u003d this.type) { \r\n super.add(obj); \r\n } else { \r\n if(obj instanceof ArrayableArray) { \r\n ArrayableArray arr \u003d (ArrayableArray)obj; \r\n if(arr.type \u003d\u003d this.type) { \r\n super.add(obj); \r\n } else { \r\n throw new IllegalArgumentException(\"Given array type does not match the parent Array type. Given type:\"\".concat(arr.type.toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } else { \r\n throw new IllegalArgumentException(\"Given value type does not match the Array value type. Given type:\"\".concat(obj.getClass().toString()).concat(\"\" Array type:\"\").concat(this.type.toString()).concat(\"\"\")); \r\n } \r\n } \r\n } \r\n public String toJSON() { \r\n String str \u003d null; \r\n try{ \r\n Gson gson \u003d new Gson(); \r\n JsonElement jsonArray \u003d gson.toJsonTree(this, new TypeToken\u003cList\u003cObject() {}.getType()); \r\n str \u003d jsonArray.toString(); \r\n } catch(NoClassDefFoundError e) { \r\n println(\"GSON not defined.cannot convert array to json\"); \r\n } \r\n return str; \r\n } \r\n public ArrayableArray getArray(int index) { \r\n ArrayableArray ret; \r\n if(super.get(index) instanceof ArrayableArray) { \r\n ret \u003d (ArrayableArray)super.get(index); \r\n } else { \r\n throw new IllegalArgumentException(\"Excepted:\"\".concat(this.getClass().toString()).concat(\"\",but got:\"\").concat(super.get(index).getClass().toString()).concat(\"\"\")); \r\n } \r\n return ret; \r\n } \r\n} \r\n void setup() { \r\n ArrayableArray arr \u003d new ArrayableArray(Integer.class); \r\n arr.add(1); \r\n arr.add(new ArrayableArray(Integer.class)); \r\n arr.getArray(1).add(1); \r\n arr.getArray(1).add(8); \r\n arr.getArray(1).add(new ArrayableArray(Integer.class)); \r\n arr.getArray(1).getArray(2).add(7); \r\n arr.getArray(1).getArray(2).add(1); \r\n arr.getArray(1).add(5); \r\n arr.add(6); \r\n println(arr.toJSON()); \r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "291",
    "title": "ActionBar - Change Home Button",
    "about": "If in your project have Appcompat change ActionBar on SupportActionBar. Replace ic_home on your name of imageview.",
    "code": "getActionBar().setHomeAsUpIndicator(R.drawable.ic_home);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "292",
    "title": "ActionBar - Menu",
    "about": "",
    "code": "}\r\n@Override\r\npublic boolean onCreateOptionsMenu(Menu menu){\r\nmenu.add(\"Share\")\r\n.setIcon(R.drawable.share)\r\n    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);\r\nmenu.add(\"Copy\")\r\n.setIcon(R.drawable.copy)\r\n    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);\r\nreturn true;\r\n}\r\n@Override\r\npublic boolean onOptionsItemSelected(final MenuItem item){\r\n    switch (item.getTitle().toString()) {\r\ncase \"Copy\":\r\n_copy();\r\n\r\nbreak;\r\ncase \"Share\":\r\n_share();\r\nreturn true;\r\n}\r\n        return super.onOptionsItemSelected(item);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "11",
    "title": "ActionBar Back Home",
    "about": "If your app using AppCompat Replace getActionBar on getSupportActionBar",
    "code": "getActionBar().setDisplayHomeAsUpEnabled(true);\n/* */} \n@Override \npublic boolean onMenuItemSelected(int featureId, MenuItem item) {\nint itemId \u003d item.getItemId(); \nswitch (itemId) {\ncase android.R.id.home:\nfinish();\nbreak;\n}\nreturn true;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "396",
    "title": "ActionBar Color",
    "about": "This code for ActionBar. If you use Toolbar (APPCOMPAT) replace getActionBar() on getSupportActionBar()",
    "code": "//ActionBar Color\r\nActionBar actionBar \u003d getActionBar(); actionBar.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#191919\")));\r\nif (Build.VERSION.SDK_INT \u003e\u003d Build.VERSION_CODES.LOLLIPOP) {\r\n    Window w \u003d MainActivity.this.getWindow();\r\n    w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);\r\n    w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);\r\n    w.setStatusBarColor(Color.parseColor(\"#000000\"));\r\n}\r\n\r\n//change actionbar title color\r\ngetActionBar().setTitle(Html.fromHtml(\"\u003cfont color\u003d\u0027#FF0000\u0027\u003eColor Tools\u003c/font\u003e\"));\r\n\r\n\r\n//something can be change with header elevant\r\n\r\ntry {\r\nif (Build.VERSION.SDK_INT \u003e\u003d 21) {\r\ngetWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);\r\ngetWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);\r\ngetWindow().setStatusBarColor(0xFF263238);\r\nheaders.setElevation(10f); //your actionbar linear\r\n}\r\n}\r\ncatch (Exception e) {\r\n};",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "8",
    "title": "ActionBar Fullscreen",
    "about": "about in comments...",
    "code": "//full screen\r\ngetWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);\r\n\r\n//unfullscreen\r\ngetWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "12",
    "title": "ActionBar Set Icon",
    "about": "",
    "code": "getActionBar().setIcon(r.drawable.icon_name);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "395",
    "title": "ActionBar Show/Hide",
    "about": "Add add source directly and paste this code.",
    "code": "//show actionbar \r\n getActionBar().show();\r\n\r\n//hide ActionBar \r\n getActionBar().hide();\r\n\r\n//APPCOMPAT (show)\r\ngetSupportActionBar().show();\r\n\r\n//APPCOMPAT (hide)\r\ngetSupportActionBar().hide();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "13",
    "title": "ActionBar SubTitle",
    "about": "Replace \"Subtitle\" on your subtitle.",
    "code": "getActionBar().setSubtitle(\"Subtitle\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "14",
    "title": "ActionBar Title",
    "about": "Replace \"Title\" on your title...",
    "code": "getActionBar().setTitle(\"Title\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "15",
    "title": "ActionBar Title RGBG",
    "about": "",
    "code": "String Int_title \u003d String.format(Locale.US, \"#%06X\", (0xFFFFFF \u0026 Color.argb(120,50,90,10)));\r\n\r\ngetActionBar().setTitle(Html.fromHtml(\"\u003cfont color\u003d\"\" + Int_title + \"\"\u003eGabriel\u003c/font\u003e\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "412",
    "title": "Activity - Remove Animation",
    "about": "Remove activity animation",
    "code": "overridePendingTransitions(0, 0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "465",
    "title": "Activity - Transition",
    "about": "This code is one of the most useful in animation since it provides an animation when leaving an activity.",
    "code": "overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);\n\n\noverridePendingTransition(android.R.anim.overshoot_interpolator, android.R.anim.overshoot_interpolator);\n\n\noverridePendingTransition(android.R.anim.linear_interpolator, android.R.anim.linear_interpolator);\n\n/Code Created by Gabriel Gymkhana and reconfigured by Tøastcode.",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "406",
    "title": "AdapterViewFlipper",
    "about": "AdapterViewFlipper",
    "code": "final AdapterViewFlipper adapterViewFlipper \u003d new AdapterViewFlipper(MainActivity.this); linear1.addView(adapterViewFlipper);\n\nfinal int IMAGES[] \u003d {R.drawable.ic_looks_one_black,\t\t\t\tR.drawable.ic_looks_two_black,\nR.drawable.ic_looks_three_black,\tR.drawable.ic_looks_four_black,\nR.drawable.ic_looks_five_black};\n\n// Names of Pages\nfinal String TEXTS[] \u003d {\"AdapterViewFlipper 1\", \"AdapterViewFlipper 2\", \"AdapterViewFlipper 3\", \"AdapterViewFlipper 4\", \"AdapterViewFlipper 5\"};\n\n\nFlipperAdapter flipperAdapter \u003d new FlipperAdapter(this, TEXTS, IMAGES);\n adapterViewFlipper.setAdapter(flipperAdapter);  adapterViewFlipper.setFlipInterval(3000); adapterViewFlipper.setAutoStart(true); }\n\n\nfinal class FlipperAdapter extends BaseAdapter {\nContext ctx;\nint[] IMAGES;\nString[] TEXTS;\nLayoutInflater inflater;\n\npublic FlipperAdapter(Context context, String[] TEXTS, int[] IMAGES){\nthis.ctx \u003d context;\nthis.IMAGES \u003d IMAGES;\nthis.TEXTS \u003d TEXTS;\nthis.inflater \u003d LayoutInflater.from(context); }\n\n@Override public int getCount() {\nreturn TEXTS.length; }\n\n@Override\npublic Object getItem(int position) {\nreturn null; }\n\n@Override public long getItemId(int position) {\nreturn 0; }\n\n@Override\npublic View getView(int position, View view, ViewGroup parent) {\n\nview \u003d inflater.inflate(R.layout.adapterviewflipper, null);\n\nTextView textview1 \u003d (TextView) view.findViewById(R.id.textview1);\nImageView imageview1 \u003d (ImageView) view.findViewById(R.id.imageview1);\n\ntextview1.setText(TEXTS[position]);\nimageview1.setImageResource(IMAGES[position]);\n\nreturn view; }\n\n\n//NOTE\n\n//inside \"main.xml\"\n//linear1\n\n//inside \"adapterviewflipper.xml\"\n//imagview1\n//textview1",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "247",
    "title": "Admob Banner",
    "about": "",
    "code": "How To Add Banner Ads From AdMob With Sketchware And AIDE ?\r\n\r\n* First:\r\n1 - add linear1 to your project to show ads in linear1\r\n2 - add this code to MoreBlock\r\n\r\n#### START ####\r\nMobileAds.initialize(this, \"ca-app-pub-7530745542139842~3104915699\");\r\nfinal AdView adView \u003d new AdView(this);\r\nadView.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(adView);\r\nadView.setAdSize(AdSize.BANNER);\r\nadView.setAdUnitId(\"ca-app-pub-7530745542139842/7894686875\");\r\n\r\nAdRequest adRequest \u003d new AdRequest.Builder().build();\r\nadView.loadAd(adRequest);\r\nadView.setAdListener(new AdListener() {\r\n@Override\r\npublic void onAdLoaded() {\r\n//showMessage(\"Loaded\");\r\n}\r\n@Override\r\npublic void onAdFailedToLoad(int errorCode) {\r\nshowMessage(\"No Internet Connection\");\r\n}\r\n@Override\r\npublic void onAdOpened() {\r\nshowMessage(\"Opened\");\r\n}\r\n@Override\r\npublic void onAdLeftApplication() {\r\n//showMessage(\"Leave App\");\r\n}\r\n@Override\r\npublic void onAdClosed() {\r\n//showMessage(\"Clossed\");\r\n}\r\n});\r\n###### End #####\r\n\r\n\r\n* More:\r\nOpen Aide --\u003e Manifest Project Add permission INTERNET and ACCESS_NETWORK_STATE\r\n\r\n* Add Again:\r\n* On Manifest:\r\n##########\r\n\u003cmeta-data\r\n android:name\u003d\"com.google.android.gms.version\"\r\n android:value\u003d\"@integer/google_play_services_version\" /\u003e\r\n\u003cactivity\r\n android:name\u003d\"com.google.android.gms.ads.AdActivity\"\r\n android:configChanges\u003d\"keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize\"\r\n android:theme\u003d\"@android:style/Theme.Translucent\" /\u003e\r\n###########\r\n\r\nOpen MainActivity (place admob on sketchware)\r\nadd import code like this:\r\n############\r\nimport com.google.android.gms.ads.MobileAds;\r\nimport com.google.android.gms.ads.AdRequest;\r\nimport com.google.android.gms.ads.AdView;\r\nimport com.google.android.gms.ads.AdListener;\r\nimport com.google.android.gms.ads.AdSize;\r\n###########\r\n\r\nAnd Last Open Build.gradle add:\r\ncom.google.android.gms:play-services-ads:+\r\n\r\nDone and see!",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "248",
    "title": "Admob Full View",
    "about": "",
    "code": "Ads AdMob Full View.\r\n\r\nOn Sketchware onCreate Add This:\r\n###########\r\nMobileAds.initialize(this, \"ca-app-pub-7530745542139842~1196614254\"); \r\nmInterstitialAd \u003d new InterstitialAd(this); \r\nmInterstitialAd.setAdUnitId(\"ca-app-pub-7530745542139842/4425412820\");\r\nmInterstitialAd.loadAd(new AdRequest.Builder().build());\r\nmInterstitialAd.setAdListener(new AdListener() { \r\n@Override \r\npublic void onAdLoaded() { \r\n// Code to be executed when an ad finishes loading. \r\n} \r\n@Override \r\npublic void onAdFailedToLoad(int errorCode) { \r\n// Code to be executed when an ad request fails. \r\n} \r\n@Override\r\npublic void onAdOpened() { \r\n// Code to be executed when the ad is displayed. \r\n} \r\n@Override\r\npublic void onAdLeftApplication() { \r\n// Code to be executed when the user has left the app.\r\n} \r\n@Override \r\npublic void onAdClosed() {\r\n// Load the next interstitial.\r\nmInterstitialAd.loadAd(new AdRequest.Builder().build()); \r\n// Code to be executed when when the interstitial ad is closed.\r\n} \r\n});\r\n#############\r\n\r\nTo View This Add OnClick\r\n##############\r\nif (mInterstitialAd.isLoaded()) {\r\nmInterstitialAd.show();\r\n}\r\n##############\r\n\r\n\r\nDone Export to Aide Add import and private:\r\n##############\r\nimport com.google.android.gms.ads.InterstitialAd;\r\nimport com.google.android.gms.ads.AdRequest;\r\nimport com.google.android.gms.ads.MobileAds;\r\nimport com.google.android.gms.ads.AdListener;\r\n###########\r\n\r\nAdd Private:\r\n###########\r\nprivate InterstitialAd mInterstitialAd;\r\n#########\r\n\r\n\r\nOn Manifest Add:\r\n#########\r\n \u003cactivity android:configChanges\u003d\"keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode\" android:name\u003d\"com.google.android.gms.ads.AdActivity\" android:theme\u003d\"@android:style/Theme.Translucent\" /\u003e\r\n\t\t\u003cactivity android:name\u003d\"com.google.android.gms.ads.purchase.InAppPurchaseActivity\" android:theme\u003d\"@style/Theme.IAPTheme\" /\u003e\r\n\t\t\u003cmeta-data android:name\u003d\"com.google.android.gms.version\" android:value\u003d\"@integer/google_play_services_version\" /\u003e\r\n\t\t\u003cactivity android:exported\u003d\"false\" android:name\u003d\"com.google.android.gms.common.api.GoogleApiActivity\" android:theme\u003d\"@android:style/Theme.Translucent.NoTitleBar\" /\u003e\r\n##############\r\n\r\n\r\npermission is some.",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "208",
    "title": "AdMob Reward Video",
    "about": "",
    "code": "}\r\npublic com.google.android.gms.ads.reward.RewardedVideoAd mReward;\r\nprivate void nothing() {\r\n\r\n//?鎭Ꭽ玭 ??? ?⎭펭  ??Ꭽ㎭ꎭ ? 쎭 ꎭ莭, ?? ??Ꭽ㎭ꎭ ?⎭펭  OnPostCreate\r\n\r\ncom.google.android.gms.ads.MobileAds.initialize(this, \"AD_UNIT_ID\");\r\nmReward \u003d com.google.android.gms.ads.MobileAds.getRewardedVideoAdInstance(this);\r\nAdRequest adRequest \u003d new AdRequest.Builder().build();\r\nmReward.loadAd(\"AD_UNIT_ID\", adRequest);\r\nmReward.setRewardedVideoAdListener(new com.google.android.gms.ads.reward.RewardedVideoAdListener() {\r\n@Override\r\npublic void onRewarded(com.google.android.gms.ads.reward.RewardItem reward) {\r\n\r\n//if success watch video \r\n\r\n}\r\n@Override\r\npublic void onRewardedVideoAdLeftApplication() {\r\n}\r\n@Override\r\npublic void onRewardedVideoAdClosed() {\r\nAdRequest adRequest \u003d new AdRequest.Builder().build();\r\nmReward.loadAd(\"AD_UNIT_ID\", adRequest);\r\n}\r\n@Override\r\npublic void onRewardedVideoAdFailedToLoad(int errorCode) {\r\nAdRequest adRequest \u003d new AdRequest.Builder().build();\r\nmReward.loadAd(\"AD_UNIT_ID\", adRequest);\r\n}\r\n@Override\r\npublic void onRewardedVideoAdLoaded() {\r\n}\r\n@Override\r\npublic void onRewardedVideoAdOpened() {\r\n}\r\n@Override\r\npublic void onRewardedVideoStarted() {\r\n}\r\n@Override\r\npublic void onRewardedVideoCompleted() {\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Video",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "249",
    "title": "Admob Video Forward",
    "about": "",
    "code": "AdMob For Sketchware Ads Video\r\n\r\nTutorial Add this on onCreate:\r\n##################\r\nMobileAds.initialize(this, \"ca-app-pub-7530745542139842~3681476673\");\r\nmRewardedVideoAd \u003d MobileAds.getRewardedVideoAdInstance(this);\r\nmRewardedVideoAd.setRewardedVideoAdListener(this);\r\nloadRewardedVideoAd();\r\n}\r\nprivate void loadRewardedVideoAd() {\r\nmRewardedVideoAd.loadAd(\"ca-app-pub-7530745542139842/2336605413\", new AdRequest.Builder().build());\r\n}\r\n@Override\r\npublic void onRewarded(RewardItem reward) {\r\nToast.makeText(this, \"onRewarded! currency: \" + reward.getType() + \" amount: \" + reward.getAmount(), Toast.LENGTH_SHORT).show();\r\n//Reward the user.\r\n}\r\n@Override\r\npublic void onRewardedVideoAdLeftApplication() {\r\nToast.makeText(this, \"onRewardedVideoAdLeftApplication\",Toast.LENGTH_SHORT).show();\r\n}\r\n@Override\r\npublic void onRewardedVideoAdClosed() {\r\nToast.makeText(this, \"onRewardedVideoAdClosed\", Toast.LENGTH_SHORT).show();\r\nloadRewardedVideoAd();\r\n}\r\n@Override\r\npublic void onRewardedVideoAdFailedToLoad(int errorCode) {\r\nToast.makeText(this, \"onRewardedVideoAdFailedToLoad\", Toast.LENGTH_SHORT).show();\r\n}\r\n@Override\r\npublic void onRewardedVideoAdLoaded() {\r\nToast.makeText(this, \"onRewardedVideoAdLoaded\", Toast.LENGTH_SHORT).show();\r\n}\r\n@Override\r\npublic void onRewardedVideoAdOpened() {\r\nToast.makeText(this, \"onRewardedVideoAdOpened\", Toast.LENGTH_SHORT).show();\r\n}\r\n@Override\r\npublic void onRewardedVideoStarted() {\r\nToast.makeText(this, \"onRewardedVideoStarted\", Toast.LENGTH_SHORT).show();\r\n}\r\n@Override\r\npublic void onRewardedVideoCompleted() {\r\nToast.makeText(this, \"onRewardedVideoCompleted\", Toast.LENGTH_SHORT).show();\r\n}\r\n@Override\r\npublic void onResume() {\r\nmRewardedVideoAd.resume(this);\r\nsuper.onResume();\r\n}\r\n@Override\r\npublic void onPause() {\r\nmRewardedVideoAd.pause(this);\r\nsuper.onPause();\r\n}\r\n@Override\r\npublic void onDestroy() {\r\nshowMessage(\"Success\");\r\nmRewardedVideoAd.destroy(this);\r\nsuper.onDestroy();\r\n}\r\n\r\npublic void nossss() {\r\n###############\r\n\r\nto show This:\r\n########\r\nif (mRewardedVideoAd.isLoaded()) { \r\n mRewardedVideoAd.show(); \r\n} \r\n##########\r\n\r\n\r\nSave And Export this to Aide:\r\nAdd import from aide:\r\n#############\r\nimport com.google.android.gms.ads.AdRequest; \r\nimport com.google.android.gms.ads.MobileAds; \r\nimport com.google.android.gms.ads.reward.RewardedVideoAd; \r\nimport com.google.android.gms.ads.reward.RewardItem; \r\nimport com.google.android.gms.ads.reward.RewardedVideoAdListener; \r\n##########\r\n\r\nChange This:\r\npublic class MainActivity extends Activity\r\n{\r\n\r\nChange to:\r\npublic class MainActivity extends Activity implements RewardedVideoAdListener \r\n{ \r\n\r\n\r\nadd this:\r\nprivate RewardedVideoAd mRewardedVideoAd;\r\n################\r\nAnd Manifest Add:\r\n\t\t\u003cactivity android:configChanges\u003d\"keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode\" android:name\u003d\"com.google.android.gms.ads.AdActivity\" android:theme\u003d\"@android:style/Theme.Translucent\" /\u003e \r\n\t\t\u003cactivity android:name\u003d\"com.google.android.gms.ads.purchase.InAppPurchaseActivity\" android:theme\u003d\"@style/Theme.IAPTheme\" /\u003e \r\n\t\t\u003cmeta-data android:name\u003d\"com.google.android.gms.version\" android:value\u003d\"@integer/google_play_services_version\" /\u003e \r\n\t\t\u003cactivity android:exported\u003d\"false\" android:name\u003d\"com.google.android.gms.common.api.GoogleApiActivity\" android:theme\u003d\"@android:style/Theme.Translucent.NoTitleBar\" /\u003e\r\n################\r\n\r\nThis need permission:\r\nINTERNET\r\nACCESS_NETWORK_STATE",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Video",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "254",
    "title": "AdView",
    "about": "",
    "code": "AdView adView;\r\nadView \u003d (AdView) findViewById(R.id.adView);\r\nadView \u003d new AdView(this);\r\n\t\tadView.setAdUnitId(\"ca-app-pub-****************/**********\");\r\n\t\tadView.setAdSize(AdSize.BANNER); //юᎭ鎭掭 ⎭Ꭽ掭? \r\n\t\tlin_hom.addView(adView);\r\n\t\tAdRequest adRequest \u003d new AdRequest.Builder().build();\r\n\t\tadView.loadAd(adRequest);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "255",
    "title": "AlertDialog",
    "about": "",
    "code": "AlertDialog.Builder builder \u003d new AlertDialog.Builder(MainActivity.this);\r\n\t\t\t\tbuilder.setTitle(\"Title\")\r\n\t\t\t\t\t.setMessage(\"Message\")\r\n\t\t\t\t\t.setCancelable(false)\r\n\t\t\t\t\t.setNegativeButton(\"ώ\", new DialogInterface.OnClickListener() {\r\n\t\t\t\t\t\tpublic void onClick(DialogInterface dialog, int id) {\r\n\t\t\t\t\t\t\t//clicked\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\tAlertDialog alert \u003d builder.create();\r\n\t\t\t\talert.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "308",
    "title": "Android version",
    "about": "",
    "code": "release \u003d Build.VERSION.RELEASE;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "408",
    "title": "Animation of View",
    "about": "Make a block and add a View item with the name of Variable is view.",
    "code": "// Modificated by SimosaDev\n\nAnimation makeInAnimation \u003d AnimationUtils.makeInAnimation(getBaseContext(), false);\nmakeInAnimation.setAnimationListener(new Animation.AnimationListener() {\n@Override\npublic void onAnimationEnd(Animation animation) { }\n\n@Override\npublic void onAnimationRepeat(Animation animation) { }\n\n@Override\npublic void onAnimationStart(Animation animation) {\n_view.setVisibility(View.VISIBLE);\n}\n});\n\nAnimation makeOutAnimation \u003d AnimationUtils.makeOutAnimation(getBaseContext(), true);\nmakeOutAnimation.setAnimationListener(new Animation.AnimationListener() {\n@Override\npublic void onAnimationEnd(Animation animation) {\n_view.setVisibility(View.INVISIBLE);\n}\n\n@Override\npublic void onAnimationRepeat(Animation animation) { }\n\n@Override\npublic void onAnimationStart(Animation animation) { }\n});\n\nif (_view.isShown()) {\n_view.startAnimation(makeOutAnimation);\n}\n\nif (!_view.isShown()) {\n_view.startAnimation(makeInAnimation);\n}\n\nScaleAnimation animview \u003d new ScaleAnimation(0,1,0,1);\nanimview.setFillBefore(true);\nanimview.setFillAfter(true);\nanimview.setFillEnabled(true);\nanimview.setDuration(1000);\nanimview.setInterpolator(new OvershootInterpolator());\n_view.startAnimation(animview);\n\n\n// Make a block and add a View item with the name of Variable is view.\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "148",
    "title": "Apk - Check Installation",
    "about": "",
    "code": "boolean isAppInstalled \u003d appInstalledOrNot(\"com.besome.sketch\"); // Ɏ ?Ꭽ쎭掭?\r\n\r\nif(isAppInstalled) {\r\nshowMessage(\"Ў?ꎭ펭莭掭ꎭ Sketchware ??Ꭽ㎭펭掭\");\r\n} else {showMessage(\"Ў?ꎭ펭莭掭ꎭ Sketchware  Ꭽ뎭掭\");}}\r\n\r\nprivate boolean appInstalledOrNot(String uri) { android.content.pm.PackageManager pm \u003d getPackageManager(); try { pm.getPackageInfo(uri, android.content.pm.PackageManager.GET_ACTIVITIES); return true; } catch (android.content.pm.PackageManager.NameNotFoundException e) { } return false;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "149",
    "title": "Apk - Code and Build Number",
    "about": "",
    "code": "String versionName \u003d \"null\";\r\nint versionCode \u003d -1;\r\ntry {\r\nandroid.content.pm.PackageInfo packageInfo \u003d MainActivity.this.getPackageManager().getPackageInfo(getPackageName(), 0);\r\n\r\nversionName \u003d packageInfo.versionName;\r\n\r\nversionCode \u003d packageInfo.versionCode;\r\n\r\n} catch (android.content.pm.PackageManager.NameNotFoundException e) {\r\ne.printStackTrace();\r\n}\r\n\r\n\r\nTextView textViewVersionInfo \u003d (TextView) findViewById(R.id.textview1);\r\n\r\ntextViewVersionInfo.setText(String.format(\"UTF-8\", versionName, versionCode));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "147",
    "title": "Apk - Share File",
    "about": "",
    "code": "String apk \u003d \"\";\r\nString uri \u003d (\"com.my.project\");\r\n\r\ntry {\r\nandroid.content.pm.PackageInfo pi \u003d getPackageManager().getPackageInfo(uri, android.content.pm.PackageManager.GET_ACTIVITIES);\r\n\r\napk \u003d pi.applicationInfo.publicSourceDir;\r\n} catch (Exception e) {\r\nshowMessage(e.toString());\r\n}\r\nIntent iten \u003d new Intent(Intent.ACTION_SEND);\r\niten.setType(\"*/*\");\r\niten.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new java.io.File(apk)));\r\n\r\nstartActivity(Intent.createChooser(iten, \"ώ???Ꭽ㎭ꎭ? APK\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "306",
    "title": "App code \u0026 Build number",
    "about": "",
    "code": "// Добавляем на экран textview1\r\n\r\nString versionName \u003d \"null\";\r\nint versionCode \u003d -1;\r\ntry {\r\nandroid.content.pm.PackageInfo packageInfo \u003d MainActivity.this.getPackageManager().getPackageInfo(getPackageName(), 0);\r\n\r\nversionName \u003d packageInfo.versionName;\r\n\r\nversionCode \u003d packageInfo.versionCode;\r\n\r\n} catch (android.content.pm.PackageManager.NameNotFoundException e) {\r\ne.printStackTrace();\r\n}\r\n\r\n\r\nTextView textViewVersionInfo \u003d (TextView) findViewById(R.id.textview1);\r\n\r\ntextViewVersionInfo.setText(String.format(\"Номер сборки: %s Код сборки:%d\", versionName, versionCode));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "444",
    "title": "AppBarLayout (AndroidX)",
    "about": "Hide AppBar while scrolling down",
    "code": "com.google.android.material.appbar.AppBarLayout.LayoutParams params \u003d (com.google.android.material.appbar.AppBarLayout.LayoutParams)_toolbar.getLayoutParams();\n\nparams.setScrollFlags(com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "16",
    "title": "AppList with icon(LAUNCH)",
    "about": "",
    "code": "Intent startupIntent \u003d new Intent(Intent.ACTION_MAIN); \t\tstartupIntent.addCategory(Intent.CATEGORY_LAUNCHER);  \t\tfinal android.content.pm.PackageManager pm \u003d getPackageManager(); \t\tList\u003candroid.content.pm.ResolveInfo\u003e activities \u003d pm.queryIntentActivities(startupIntent,0);   \t\tCollections.sort(activities, new Comparator\u003candroid.content.pm.ResolveInfo\u003e() {  \t\t\t\tpublic int compare(android.content.pm.ResolveInfo a, android.content.pm.ResolveInfo b) {  \t\t\t\t\tandroid.content.pm.PackageManager pm \u003d getPackageManager();  \t\t\t\t\treturn String.CASE_INSENSITIVE_ORDER.compare(  \t\t\t\t\t\ta.loadLabel(pm).toString(),  \t\t\t\t\t\tb.loadLabel(pm).toString());  \t\t\t\t}  \t\t\t});   \t\tArrayAdapter\u003candroid.content.pm.ResolveInfo\u003e adapter \u003d new ArrayAdapter\u003candroid.content.pm.ResolveInfo\u003e(  \t\t\tthis, android.R.layout.simple_list_item_1, activities) {  \t\t\tpublic View getView(int pos, View convertView, ViewGroup parent) { TextView tv \u003d new TextView(MainActivity.this);  \t\t\t\tandroid.content.pm.ResolveInfo ri \u003d getItem(pos);  \t\t\ttv.setText(ri.loadLabel(pm));  \tLinearLayout lin \u003d new LinearLayout(MainActivity.this);ImageView iv \u003d new ImageView(MainActivity.this);iv.setImageDrawable(ri.loadIcon(pm));lin.addView(iv);lin.addView(tv);tv.setGravity(Gravity.CENTER_VERTICAL);tv.setPadding(16,0,0,0);tv.setTextSize(16);tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT ));LinearLayout.LayoutParams p \u003d\tnew LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT);p.width \u003d 70;p.height \u003d 70;p.bottomMargin \u003d 4;p.topMargin \u003d 4;iv.setLayoutParams(p);lin.setPadding(6,6,6,6);return lin;  \t\t\t}  \t\t};  \t\tlistview1.setAdapter(adapter); \t\t \t\tlistview1.setOnItemClickListener(new AdapterView.OnItemClickListener() {  \t\t\t\t@Override \t\t\t\tpublic void onItemClick(AdapterView adapter, View v, int position, long id) \t\t\t\t{ \t\t\t\t\tandroid.content.pm.ResolveInfo resolveInfo \u003d (android.content.pm.ResolveInfo)adapter.getItemAtPosition(position);  \t\t\t\t\tandroid.content.pm.ActivityInfo activityInfo \u003d resolveInfo.activityInfo;  \t\t\t\t\tif (activityInfo \u003d\u003d null) return;  \t\t\t\t\tIntent i \u003d new Intent(Intent.ACTION_MAIN);  \t\t\t\t\ti.setClassName(activityInfo.applicationInfo.packageName, activityInfo.name);  \t\t\t\t\tstartActivity(i); \t\t\t\t}  \t\t\t \t\t});;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "106",
    "title": "Arrow Download Animation",
    "about": "",
    "code": "final ArrowDownloadButton txt \u003d new ArrowDownloadButton(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(100, 100));\r\nlinear1.addView(txt);\r\ntxt.setOnClickListener(new View.OnClickListener() {\r\n            @Override\r\n            public void onClick(View v) {\r\n                if ((count % 2) \u003d\u003d 0) {\r\n                    txt.startAnimating();\r\n                    Timer timer \u003d new Timer();\r\n                    timer.schedule(new TimerTask() {\r\n                        @Override\r\n                        public void run() {\r\n                            runOnUiThread(new Runnable() {\r\n                                @Override\r\n                                public void run() {\r\n                                    progress \u003d progress + 1;\r\n                                    txt.setProgress(progress);\r\n                                }\r\n                            });\r\n                        }\r\n                    }, 800, 20);\r\n                } else {\r\n                    txt.reset();\r\n                }\r\n                count++;\r\n            }\r\n        });\r\n    }\r\n    private int count;\r\n    private int progress;\r\n    public void noth() {",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "373",
    "title": "ASE (Advanced Standard Encrypted)",
    "about": "Add add source directly and paste this code in any method after all blocks.",
    "code": "/*Create \" Encrypted\u0026Decryped \" More Block and Put Below Code Inside ASD Block*/\r\n\r\n\r\n\r\n}\r\nprivate javax.crypto.SecretKey generateKey(String pwd) throws Exception {\r\n\r\nfinal java.security.MessageDigest digest \u003d java.security.MessageDigest.getInstance(\"SHA-256\");\r\n\r\nbyte[] b \u003d pwd.getBytes(\"UTF-8\");\r\n\r\ndigest.update(b,0,b.length);\r\n\r\nbyte[] key \u003d digest.digest();\r\n\r\njavax.crypto.spec.SecretKeySpec sec \u003d new javax.crypto.spec.SecretKeySpec(key, \"AES\");\r\n\r\nreturn sec;\r\n\r\n\r\n/*Now Create \" Encrypted \" More Block With below given 3 string variable \r\n1) \"string\" \r\n2)\"key\"\r\n3)\"encrypted \"\r\nAnd Put Below Code Inside ASD Block */\r\n\r\n\r\ntry {\r\njavax.crypto.SecretKey key \u003d generateKey(_key); \r\njavax.crypto.Cipher c \u003d javax.crypto.Cipher.getInstance(\"AES\"); \r\nc.init(javax.crypto.Cipher.ENCRYPT_MODE, key); \r\nbyte[] encVal \u003d c.doFinal(_string.getBytes());\r\nencrypted \u003d android.util.Base64.encodeToString(encVal,android.util.Base64.DEFAULT);\r\n\r\n} catch (Exception ex) {\r\nshowMessage(String.valueOf(ex));\r\n}\r\n\r\n\r\n/*Now Create \" Decrypted \" More Block With below given 3 string variable \r\n1) \"string\" \r\n2)\"key\"\r\n3)\"decrypted \"\r\nAnd Put Below Code Inside ASD Block */\r\n\r\n\r\n\r\ntry {\r\njavax.crypto.spec.SecretKeySpec key \u003d (javax.crypto.spec.SecretKeySpec) generateKey(_key);\r\n\r\njavax.crypto.Cipher c \u003d javax.crypto.Cipher.getInstance(\"AES\");\r\nc.init(javax.crypto.Cipher.DECRYPT_MODE,key); \r\nbyte[] decode \u003d android.util.Base64.decode(_string,android.util.Base64.DEFAULT); \r\nbyte[] decval \u003d c.doFinal(decode);\r\ndecrypted \u003d new String(decval); \r\n\r\n} catch (Exception ex) {\r\n\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "487",
    "title": "AsyncTask - Download Image",
    "about": "Uses AsyncTask to download image from the internet. You can modify it to download a file too. (Place the code in end of onCreate or end of moreblock)\r\nUsage might be: new GetImageFromUrl().execute(\"https://example.com/url.png\");",
    "code": "}\r\nBitmap bitmap;\r\n    \r\npublic class GetImageFromUrl extends android.os.AsyncTask\u003cString, Void, Bitmap\u003e{\r\n        View view;\r\n        public GetImageFromUrl(View v){\r\n            this.view \u003d v;\r\n    }\r\n        \r\n\t @Override\r\n\tprotected android.graphics.Bitmap doInBackground(String... url) {\r\n\t\tString stringUrl \u003d url[0];\r\n\t\tbitmap \u003d null;\r\n\t\t//java.io.InputStream inputStream;\r\n\t\ttry {\r\n\t\t\t//inputStream \u003d new java.net.URL(stringUrl).openStream();\r\n\t\t\tbitmap \u003d android.graphics.BitmapFactory.decodeStream ((java.io.InputStream)new java.net.URL(url[0]).getContent());\r\n\t\t} catch (java.io.IOException e) {\r\n\t\t\t\r\n\t\t}\r\n\t\treturn bitmap;\r\n\t}\r\n        \r\n\t @Override\r\n\tprotected void onPostExecute(android.graphics.Bitmap bitmap){\r\n\t\tsuper.onPostExecute(bitmap);\r\n\t\tif (bitmap !\u003d null){\r\n\t\t\tandroid.graphics.drawable.BitmapDrawable bd \u003d new android.graphics.drawable.BitmapDrawable(bitmap);\r\n\t\t\t//imageview1.setImageDrawable(bd);\r\n\r\n\t\t\tview.setBackground(new android.graphics.drawable.BitmapDrawable(bitmap));\r\n\t\t}\r\n\t}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "Submitted by TheRandomCrafter83",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "497",
    "title": "AsyncTask - Sample help",
    "about": "This is untested code for explaining how it works.",
    "code": "\r\n/** PLACE THIS CODE IN END OF OnCreate OR A MOREBLOCK */\r\n/** THIS IS UNTESTED CODE FOR STUDY PURPOSE, DONT USE IT AS IT IS */\r\n}\r\nprivate class myBigTask extends AsyncTask\u003cString, Integer, String\u003e {\r\n@Override\r\nprotected void onPreExecute() {\r\n    super.onPreExecute();\r\n        //codes that you want to do before your heavy task\r\n    }\r\n@Override\r\nprotected String doInBackground(String... value) {\r\n//your big task code here\r\n    while(boolean){ //or any loop\r\n    //here you tell what is the progress of big task, you can send publishProgress(% of progress done) anytime\r\n        publishProgress((int) progress);\r\n    }\r\n    if(jobSuccessful){\r\n        output \u003d \"Success\";\r\n    } else{\r\n        output \u003d \"error\";\r\n    }\r\n\r\n    return output;\r\n    //you are sending output to onPostExecute\r\n}\r\n@Override\r\nprotected void onProgressUpdate(Integer... progress) {\r\nsuper.onProgressUpdate(progress);\r\n//when you did publishProgress(int) in doInBackground, it will perform this function\r\n    txt_progress.setText((int)progress); //untested\r\n}\r\n@Override\r\nprotected void onPostExecute(String returnedOutput) {\r\n    if(returnedOutput \u003d\u003d \"Success\") {\r\n        showMessage(\"Successfully task completed\");\r\n    } else {\r\n        showMessage(\"Error occurred\");\r\n    }\r\n}\r\n\r\n/** NOW CALL THIS LINE WHENEVER YOU HAVE TO PERFORM ABOVE TASK */\r\nnew myBigTask().execute(value);\r\n\r\n/** An example of this code is available at https://codehive.sketchub.in/view.php?id\u003d23 */",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "17",
    "title": "AsynkTask Example",
    "about": "about in comments...",
    "code": "private class AsyncTaskEx extends AsyncTask\u003cVoid, Void, Void\u003e {\r\n\r\n    /** The system calls this to perform work in a worker thread and\r\n    * delivers it the parameters given to AsyncTask.execute() */\r\n    @Override\r\n    protected Void doInBackground(Void... arg0) {\r\n        StartTimer();//call your method here it will run in background\r\n        return null;\r\n    }\r\n\r\n    /** The system calls this to perform work in the UI thread and delivers\r\n    * the result from doInBackground() */\r\n    @Override\r\n    protected void onPostExecute(Void result) {\r\n        //Write some code you want to execute on UI after doInBackground() completes\r\n        return ;\r\n    }\r\n\r\n    @Override\r\n    protected void onPreExecute() {\r\n        //Write some code you want to execute on UI before doInBackground() starts\r\n        return ;\r\n    }\r\n}\r\n\r\n\r\n//Write this class inside your Activity and call where you want execute your method\r\n\r\nnew AsyncTaskEx().execute();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "280",
    "title": "Autocomplete Text",
    "about": "",
    "code": "//Create New\r\nfinal AutoCompleteTextView url \u003d new AutoCompleteTextView(MainActivity.this);\r\n\r\n//Layout set Weight 1\r\nurl.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, 35, 1.0f));\r\n\r\n//Padding\r\nurl.setPadding(8,8,8,8);\r\n\r\n//Size\r\nurl.setTextSize(12);\r\n\r\n//Color\r\nurl.setTextColor(Color.parseColor(\"#000000\"));\r\n\r\n//Hint\r\nurl.setHint(\"Write\");\r\n\r\n//Hint Color\r\nurl.setHintTextColor(Color.parseColor(\"#607D8B\"));\r\n\r\n//Set Bg Transparent\r\nurl.setBackgroundColor(Color.TRANSPARENT);\r\n\r\n//ImeOption\r\nurl.setImeOptions(android.view.inputmethod.EditorInfo.IME_ACTION_GO);\r\n\r\n//View By pos 0\r\nlinear2.addView(url, 0);\r\n\r\n\r\nArrayAdapter\u003cString\u003e adapterAutoCmplt \u003d new ArrayAdapter\u003cString\u003e(this, android.R.layout.simple_list_item_1, autoCmplt);\r\nurl.setAdapter(adapterAutoCmplt);\r\n\r\n//Make List String With Name autoCmplt\r\n//and add to string what you want",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "1",
    "title": "Background (HEX COLOR)",
    "about": "Edit HEX color (#000000) on your HEX color.",
    "code": "linear1.setBackgroundColor(Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "107",
    "title": "Battery Health",
    "about": "",
    "code": "//onCreate\r\nIntentFilter iFilter \u003d new IntentFilter(Intent.ACTION_BATTERY_CHANGED);\r\ngetApplicationContext().registerReceiver(mBroadcastReceiver,iFilter);\r\n\r\n\r\n\r\nprivate BroadcastReceiver mBroadcastReceiver \u003d new BroadcastReceiver() {\r\n@Override\r\npublic void onReceive(Context context, Intent intent) {\r\nToast.makeText(getApplicationContext(), \"Received\", Toast.LENGTH_SHORT).show();\r\nint health \u003d intent.getIntExtra(BatteryManager.EXTRA_HEALTH,0);\r\nString healthString \u003d \"\";\r\n// Determine the battery health from return integer value\r\nif(health \u003d\u003d BatteryManager.BATTERY_HEALTH_COLD){\r\n   healthString \u003d \"COLD\";\r\n}else if (health \u003d\u003d BatteryManager.BATTERY_HEALTH_DEAD){\r\n   healthString \u003d \"DEAD\";\r\n}else if (health \u003d\u003d BatteryManager.BATTERY_HEALTH_GOOD){\r\n   healthString \u003d \"GOOD\";\r\n}else if (health \u003d\u003d BatteryManager.BATTERY_HEALTH_OVERHEAT){\r\n   healthString \u003d \"OVER HEAT\";\r\n}else if (health \u003d\u003d BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE){\r\n   healthString \u003d \"OVER VOLTAGE\";\r\n}else if(health \u003d\u003d BatteryManager.BATTERY_HEALTH_UNKNOWN){\r\n   healthString \u003d \"UNKNOWN\";\r\n}else if(health \u003d\u003d BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE){\r\n   healthString \u003d \"UNSPECIFIED FAILURE\";\r\n}\r\ntextview1.setText(\"Battery Health : \" + healthString);\r\n}\r\n};",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "108",
    "title": "Battery Level",
    "about": "",
    "code": "BatteryManager bm \u003d (BatteryManager)getSystemService(BATTERY_SERVICE);\r\nint batLevel \u003d bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);\r\ntextview1.setText(Integer.toString(batLevel));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "109",
    "title": "Battery Temperature",
    "about": "",
    "code": "//OnCreate\r\nIntentFilter iFilter \u003d new IntentFilter(Intent.ACTION_BATTERY_CHANGED);\r\ngetApplicationContext().registerReceiver(mBroadcastReceiver,iFilter);\r\n\r\n\r\n\r\nprivate BroadcastReceiver mBroadcastReceiver \u003d new BroadcastReceiver() {\r\n@Override\r\npublic void onReceive(Context context, Intent intent) {\r\nfloat temperature \u003d (float)(intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0))/10;\r\ntextview1.setText(\"Battery Temperature\r\n\" + temperature +\" \"+ (char) 0x00B0 +\"C\");\r\n}\r\n};",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "110",
    "title": "Battery Voltage",
    "about": "",
    "code": "//InCreate\r\nIntentFilter iFilter \u003d new IntentFilter(Intent.ACTION_BATTERY_CHANGED);\r\ngetApplicationContext().registerReceiver(mBroadcastReceiver,iFilter);\r\n\r\n\r\nprivate BroadcastReceiver mBroadcastReceiver \u003d new BroadcastReceiver() {\r\n@Override\r\npublic void onReceive(Context context, Intent intent) {\r\nToast.makeText(getApplicationContext(), \"Received\", Toast.LENGTH_SHORT).show();\r\nint voltage \u003d intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,0);\r\ndouble volt \u003d  voltage * 0.0\r\njava.text.DecimalFormat newFormat \u003d new java.text.DecimalFormat(\"#.#\");\r\ndouble oneDecimalVolt \u003d  Double.valueOf(newFormat.format(volt));\r\ntextview1.setText(\"Battery Voltage\");\r\ntextview1.setText(textview1.getText() +\"\r\nMillivolts : \" + voltage);\r\ntextview1.setText(textview1.getText() + \"\r\nVolt : \" + oneDecimalVolt);\r\n}\r\n};",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "111",
    "title": "BitMap Compression",
    "about": "",
    "code": "android.graphics.drawable.Drawable drawable \u003d getDrawable(R.drawable.image);\r\nBitmap bitmap \u003d ((android.graphics.drawable.BitmapDrawable)drawable).getBitmap();\r\n//Source\r\nimageview1.setImageBitmap(bitmap);\r\n\r\njava.io.ByteArrayOutputStream stream \u003d new java.io.ByteArrayOutputStream();\r\nbitmap.compress(Bitmap.CompressFormat.JPEG,50,stream);\r\nbyte[] byteArray \u003d stream.toByteArray();\r\nBitmap compressedBitmap \u003d BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);\r\n//Result 50% Quality\r\nimageview2.setImageBitmap(compressedBitmap);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "112",
    "title": "BitMap Shader",
    "about": "",
    "code": "Bitmap bitmap \u003d BitmapFactory.decodeResource(getResources(),R.drawable.pattern);\r\nShader shader \u003d new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);\r\ntextview1.setLayerType(View.LAYER_TYPE_SOFTWARE, null);\r\ntextview1.getPaint().setShader(shader);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "113",
    "title": "BitMap To String",
    "about": "",
    "code": "//Bitmap to String:\r\npublic String BitMapToString(Bitmap bitmap){\r\n      java.io.ByteArrayOutputStream baos\u003dnew  java.io.ByteArrayOutputStream();\r\n      bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);\r\n      byte [] arr\u003dbaos.toByteArray();\r\n      String result\u003dBase64.encodeToString(arr, Base64.DEFAULT);\r\n      return result;\r\n}\r\n\r\n\r\n//String to Bitmap:\r\npublic Bitmap StringToBitMap(String image){\r\n   try{\r\n      byte [] encodeByte\u003dBase64.decode(image,Base64.DEFAULT);\r\n      Bitmap bitmap\u003dBitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);\r\n      return bitmap;\r\n   }catch(Exception e){\r\n      e.getMessage();\r\n      return null;\r\n   }\r\n }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "114",
    "title": "Block Capturing",
    "about": "",
    "code": "getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "120",
    "title": "Bluetooth Manager",
    "about": "",
    "code": "//Bluetooth On\r\nfinal android.bluetooth.BluetoothAdapter bluetoothAdapter \u003d android.bluetooth.BluetoothAdapter.getDefaultAdapter();\r\nif (bluetoothAdapter !\u003d null) {\r\n    showMessage(\"This device support bluetooth\");\r\n} else {\r\n   showMessage(\"This device not supported bluetooth\");\r\n}\r\n\r\n\r\nif (!bluetoothAdapter.isEnabled()) {\r\nIntent turnOn \u003d new Intent((android.bluetooth.BluetoothAdapter.ACTION_REQUEST_ENABLE));\r\nstartActivityForResult(turnOn, 0);\r\nshowMessage(\"Turned On\");\r\n} else {\r\nshowMessage(\"Already On\");\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n//Bluetooth OFF\r\nfinal android.bluetooth.BluetoothAdapter bluetoothAdapter \u003d android.bluetooth.BluetoothAdapter.getDefaultAdapter();\r\nif (bluetoothAdapter !\u003d null) {\r\n    showMessage(\"This device support bluetooth\");\r\n} else {\r\n   showMessage(\"This device not supported bluetooth\");\r\n}\r\n\r\n\r\nbluetoothAdapter.disable();\r\nshowMessage(\"OFF\");\r\n\r\n\r\n\r\n\r\n\r\n\r\n//Make Bluetooth Visible\r\nfinal android.bluetooth.BluetoothAdapter bluetoothAdapter \u003d android.bluetooth.BluetoothAdapter.getDefaultAdapter();\r\nif (bluetoothAdapter !\u003d null) {\r\n    showMessage(\"This device support bluetooth\");\r\n} else {\r\n   showMessage(\"This device not supported bluetooth\");\r\n}\r\n\r\n\r\nIntent getVisible \u003d new Intent(android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); startActivityForResult(getVisible, 0);\r\n\r\n}\r\n\r\nprivate static final int BT_VISIBLE_ENABLE \u003d 13;\r\n\r\nprivate void makeBTDiscoverable() {\r\nIntent discoverableIntent \u003d new Intent(android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);\r\ndiscoverableIntent.putExtra(android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivityForResult(discoverableIntent, BT_VISIBLE_ENABLE);\r\n}\r\n\r\npublic void onActivityResult(int requestCode, int resultCode, Intent data) {\r\nif (requestCode \u003d\u003d BT_VISIBLE_ENABLE) {\r\nshowMessage(\"The device has been made available successfully\");\r\n} else {\r\nshowMessage(\"An error was encountered while making the device discoverable!\");\r\n}\r\n\r\n\r\n\r\n//ListBluetooth Button\r\nfinal android.bluetooth.BluetoothAdapter bluetoothAdapter \u003d android.bluetooth.BluetoothAdapter.getDefaultAdapter();\r\nfinal Set\u003candroid.bluetooth.BluetoothDevice\u003e pairedDevices \u003d bluetoothAdapter.getBondedDevices();\r\n\r\nfinal ArrayList list \u003d new ArrayList();\r\nfor (android.bluetooth.BluetoothDevice bt : pairedDevices)\r\nlist.add(bt.getName()); \r\nshowMessage(\"Showing Paired Devices\");\r\nfinal ArrayAdapter\u003candroid.content.pm.ResolveInfo\u003e adapter \u003d new ArrayAdapter\u003candroid.content.pm.ResolveInfo\u003e(MainActivity.this, android.R.layout.simple_list_item_1, list);\r\nlistview1.setAdapter(adapter);\r\nlistview1.refreshDrawableState();\r\n\r\n\r\n\r\n\r\n/* add permission\r\n\u003cuses-permission android:name\u003d\"android.permission.BLUETOOTH\" /\u003e\r\n\u003cuses-permission android:name\u003d\"android.permission.BLUETOOTH_ADMIN\" /\u003e\r\n*/",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Bluetooth",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "380",
    "title": "Bottom Navigation",
    "about": "Add add source directly and paste this code",
    "code": "com.google.android.material.bottomnavigation.BottomNavigationView btm\u003d new com.google.android.material.bottomnavigation.BottomNavigationView(MainActivity.this);\nbtm.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\n\n\n\nlinear1.addView(btm);\nlinear1.setElevation(16);\n\nMenu menu \u003d btm.getMenu();\n\nfinal int A \u003d 0;\nfinal int B \u003d 1;\nfinal int C \u003d 2;\n\n    \n\nmenu.add(Menu.NONE, A, Menu.NONE, \"Home\").setIcon(R.drawable.ic_home_grey);\n\nmenu.add(Menu.NONE, B, Menu.NONE, \"Favorites\").setIcon(R.drawable.ic_favorite_grey);\n\nmenu.add(Menu.NONE, C, Menu.NONE, \"Profile\").setIcon(R.drawable.ic_person_grey);\nbtm.setOnNavigationItemSelectedListener(new  com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener() {  @Override public boolean onNavigationItemSelected(final MenuItem item) {\nswitch (item.getItemId()){ \ncase A: \nshowMessage(\"item1\");\nbreak;\ncase B:\n\nshowMessage(\"item2\");\n\nbreak; \ncase C:\n\nshowMessage(\"item3\");\n \nbreak; \n\n} return true; } });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "256",
    "title": "BottomSheet",
    "about": "",
    "code": "LinearLayout llBottomSheet \u003d (LinearLayout) findViewById(R.id.bottom_sheet); \r\n// Ꭽ???뎭쎭 ?㎭掭掭ꎭ ꎭ莭掭䎭 쎭?Ꭽ\r\n\tBottomSheetBehavior bottomSheetBehavior \u003d BottomSheetBehavior.from(llBottomSheet); \r\n// Ꭽ???뎭쎭 ???ꎭ ꎭ莭掭䎭 쎭?Ꭽ \r\n\tbottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); \r\n\tbottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); \r\n\tbottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); \r\n// Ꭽ???뎭쎭 Ꭽ쎭?ꎭᎭ펭 ㎭?? \r\n\tbottomSheetBehavior.setPeekHeight(340); \r\n// Ꭽ???뎭쎭 ㎭鎭莭?? ?쎭?? 펭掭掭 ?? ?㎭Ꭽ뎭? ㎭ꎭ \r\n\tbottomSheetBehavior.setHideable(false); \r\n// Ꭽ???뎭쎭 쎭펭⎭쎭 ?? ꎭ鎭掭掭ꎭ \r\n\tbottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { \r\n@Override public void onStateChanged(@NonNull View bottomSheet, int newState) { \r\n\r\n} \r\n@Override public void onSlide(@NonNull View bottomSheet, float slideOffset) {\r\n\r\n } \r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "257",
    "title": "BottomSheetDialog",
    "about": "",
    "code": "final BottomSheetDialog font_txt \u003d new BottomSheetDialog(XmlEditor.this);\r\n\t\t\t\tView infla \u003d getLayoutInflater().inflate(R.layout.dialog_text_size, null); \r\n\t\t\t\tfont_txt.setContentView(infla); \r\nfont_txt.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "446",
    "title": "BottomSheetDialog (AndroidX)",
    "about": "",
    "code": "final\ncom.google.android.material.bottomsheet.BottomSheetDialog bs_base \u003d new com.google.android.material.bottomsheet.BottomSheetDialog(MainActivity.this);\n\nView layBase \u003d getLayoutInflater().inflate(R.layout.cust, null);\n\nbs_base.setContentView(layBase);\n\nbs_base.show();\n\nButton pay_bs \u003d (Button)layBase.findViewById(R.id.button1);\n\npay_bs.setOnClickListener(new View.OnClickListener() {\npublic void onClick(View v) {\nbs_base.dismiss();\n\n\nshowMessage(\"Payment Done\");\n\n}\n\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "409",
    "title": "Brightness Display",
    "about": "Brightness display with float number value",
    "code": "// Modificated by SimosaDev\n// Brightness of num value is 0.0 ~ 1.0\n\nWindowManager.LayoutParams lay \u003d getWindow().getAttributes();\n\nlay.screenBrightness \u003d (float)_num;\ngetWindow().setAttributes(lay);\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "482",
    "title": "Button - Disable Capitals",
    "about": "By default, text on buttons are in Capital letters, If you need to disable button capitals then try out this code.",
    "code": "yourbutton.setTransformationMethod(null);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,UI",
    "source": "https://stackoverflow.com/a/26959656",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "379",
    "title": "Button Background",
    "about": "Create variable color.",
    "code": "color \u003d \"INSERT HERE A HEX COLOR\";\r\nbutton1.getBackground().setColorFilter(Color.parseColor(color), PorterDuff.Mode.MULTIPLY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "48",
    "title": "Button Color",
    "about": "",
    "code": "button1.getBackground().setColorFilter(Color.parseColor(\"#FAFAFA\"), PorterDuff.Mode.MULTIPLY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "2",
    "title": "Button ColorStateList",
    "about": "Replace button1 on your widget name",
    "code": "android.graphics.drawable.GradientDrawable bg \u003d new android.graphics.drawable.GradientDrawable();\n\nbg.setColor(new android.content.res.ColorStateList(new int[][] {{-android.R.attr.state_pressed}, {android.R.attr.state_pressed}},new int[] {Color.parseColor(\"#901020\"), Color.parseColor(\"#40109020\")}));\nbg.setShape(1);\nbg.setCornerRadius(10);\nbg.setStroke(2, new android.content.res.ColorStateList(new int[][] {{-android.R.attr.state_pressed}, {android.R.attr.state_pressed}}, new int[] {Color.parseColor(\"#505050\"), Color.parseColor(\"#502010\")}));\n\nbutton1.setBackground(bg);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "46",
    "title": "Button On Click",
    "about": "",
    "code": "button1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\n// your code area\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "47",
    "title": "Button OnLongClick",
    "about": "",
    "code": "button1.setOnLongClickListener(new View.OnLongClickListener() {@Override public boolean onLongClick(View v){ Toast.makeText(getApplicationContext(),\"Long Clicked!\",Toast.LENGTH_LONG).show();return false;}});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "139",
    "title": "Cache Directory",
    "about": "",
    "code": "getApplicationContext().getExternalCacheDir() + \"/\";",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "293",
    "title": "CardView - Add programmatically",
    "about": "",
    "code": "// Initialize a new CardView CardView card \u003d new CardView(mContext); // Set the CardView layoutParams LayoutParams params \u003d new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ); card.setLayoutParams(params); // Set CardView corner radius card.setRadius(9); // Set cardView content padding card.setContentPadding(15, 15, 15, 15); // Set a background color for CardView card.setCardBackgroundColor(Color.parseColor(\"#FFC6D6C3\")); // Set the CardView maximum elevation card.setMaxCardElevation(15); // Set CardView elevation card.setCardElevation(9); // Initialize a new TextView to put in CardView TextView tv \u003d new TextView(mContext); tv.setLayoutParams(params); tv.setText(\"CardView\nProgrammatically\"); tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 30); tv.setTextColor(Color.RED); // Put the TextView in CardView card.addView(tv); // Finally, add the CardView in root layout mRelativeLayout.addView(card);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "282",
    "title": "Catch error",
    "about": "",
    "code": "try { //code that may crash } catch(Exception e){ //here do something when try detects error Log.e(\"Error: \", e.toString()); }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "115",
    "title": "Change NavigationBar Color",
    "about": "",
    "code": "Window window \u003d this.getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.setNavigationBarColor(Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "424",
    "title": "Change rounding for specific angles (edges)",
    "about": "Change rounding for specific angles (edges)",
    "code": "android.graphics.drawable.GradientDrawable d \u003d new android.graphics.drawable.GradientDrawable();\nd.setStroke(3, Color.RED);\nd.setCornerRadii(new float[]{17.0f,18.0f,12.0f,8.0f,5.0f,5.0f,4.0f,2.0f});\nbutton.setBackgroundDrawable(d);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "116",
    "title": "Change StatusBar Color",
    "about": "",
    "code": "Window w \u003d this.getWindow();w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); w.setStatusBarColor(Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "492",
    "title": "Check if installed from Google play",
    "about": "Check if app is installed from playstore, a great layer of protection to prevent modded versions of your app (despite a good modder can remove this code too)",
    "code": "// Note: Make a boolean variable named \"is_downloaded_from_playstore\"\r\n\r\n// A list with valid installers package name List\u003cString\u003e validInstallers \u003d new ArrayList\u003c\u003e(java.util.Arrays.asList(\"com.android.vending\", \"com.google.android.feedback\"));\r\n\r\n // The package name of the app that has installed your app final\r\nString installer \u003d getApplicationContext().getPackageManager().getInstallerPackageName(getApplicationContext().getPackageName());\r\n\r\n// true if your app has been downloaded from Play Store \r\nis_downloaded_from_playstore \u003d  installer !\u003d null \u0026\u0026 validInstallers.contains(installer);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Debug,Java",
    "source": "Submitted by TheClashFruit from https://stackoverflow.com/a/37540163/9300428",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "413",
    "title": "Check Root (SuperSU \u0026 Magisk)",
    "about": "Check if the phone is rooted (Simple and Easy)",
    "code": "public static boolean isRooted()\n\t{\n\t\ttry\n\t\t{\n\t\t  /*\n\t\t    * By Pything, very simple to use\n\t\t    *\n\t\t    * @param isRooted\n\t\t    *\n\t\t    * if (isRooted()) {\n\t\t    *   ROOTED\n\t\t    * } else {\n\t\t    *   Non-rooted\n\t\t    * }\n\t\t    */\n\t\t\treturn Runtime.getRuntime().exec(\"su\").waitFor() \u003d\u003d 10000;\n\t\t}\n\t\tcatch (Exception e)\n\t\t{\n\t\t\te.printStackTrace();\n\t\t\treturn false;\n\t\t}\n\t}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "498",
    "title": "Check System Dark Mode",
    "about": "Useful in changing app theme",
    "code": "int nightModeFlags \u003d getResources().getConfiguration().uiMode \u0026 android.content.res.Configuration.UI_MODE_NIGHT_MASK;\r\nif (nightModeFlags \u003d\u003d android.content.res.Configuration.UI_MODE_NIGHT_YES) {\r\n// ACTION WHEN DARK MODE IS ON\r\n} else {\r\n// ACTION IF DARK MODE IS OFF\r\n};",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "Submitted by Everthing_Discord",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "436",
    "title": "Check WiFi Internet Connection (New)",
    "about": "// Place it wherever you want.\n\n//Need permission\n\n\u003cuses-permission android:name\u003d\"android.permission.ACCESS_NETWORK_STATE\" /\u003e\n\n\u003cuses-permission android:name\u003d\"android.permission.CHANGE_NETWORK_STATE\" /\u003e\n\n\u003cuses-permission android:name\u003d\"android.permission.CHANGE_WIFI_STATE\" /\u003e\n",
    "code": "// Place it wherever you want.\n// Check internet wifi connection.\n\nandroid.net.ConnectivityManager connMgr \u003d (android.net.ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);\nandroid.net.NetworkInfo networkInfo \u003d connMgr.getActiveNetworkInfo();\nif (networkInfo !\u003d null \u0026\u0026 networkInfo.isConnected()) {\n} else {\nshowMessage(\"Internet Error. Please check your Internet... !\");\n\n// If the wifi internet is not connected then go directly to the wifi device settings.\n\nstartActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);\n\nfinal android.net.wifi.WifiManager wifi \u003d (android.net.wifi.WifiManager)getSystemService(Context.WIFI_SERVICE);\nwifi.setWifiEnabled(true);\n}\n\n\n\n//Need permission\n\n\u003cuses-permission android:name\u003d\"android.permission.ACCESS_NETWORK_STATE\" /\u003e\n\n\u003cuses-permission android:name\u003d\"android.permission.CHANGE_NETWORK_STATE\" /\u003e\n\n\u003cuses-permission android:name\u003d\"android.permission.CHANGE_WIFI_STATE\" /\u003e\n\n\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "400",
    "title": "Checkbox color",
    "about": "CheckBox Color",
    "code": "\ncheckbox1.getButtonDrawable().setColorFilter(Color.parseColor(\"#FF00FF\"), PorterDuff.Mode.SRC_IN);\n\n//checkbox1 is your checkbox ID\n//#FF00FF is your RRGGBB color",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "117",
    "title": "Checkbox Set Color",
    "about": "",
    "code": "checkbox1.getButtonDrawable().setColorFilter(Color.parseColor(\"#FF00FF\"), PorterDuff.Mode.SRC_IN);\r\n\r\n//checkbox1 is your checkbox ID\r\n//#FF00FF is your RRGGBB color",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "283",
    "title": "Chronometer",
    "about": "",
    "code": "Chronometer cm \u003d new Chronometer(this); linear1.addView (cm);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "356",
    "title": "Class - BluetoothConnect",
    "about": "",
    "code": "package com.sketch.code.two;\r\n\r\nimport android.app.Activity;\r\nimport android.bluetooth.BluetoothAdapter;\r\nimport android.bluetooth.BluetoothDevice;\r\nimport android.content.Intent;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.Set;\r\nimport java.util.UUID;\r\n\r\npublic class BluetoothConnect {\r\nprivate static final String DEFAULT_UUID \u003d \"00001101-0000-1000-8000-00805F9B34FB\";\r\n\r\nprivate Activity activity;\r\n\r\nprivate BluetoothAdapter bluetoothAdapter;\r\n\r\npublic BluetoothConnect(Activity activity) {\r\nthis.activity \u003d activity;\r\nthis.bluetoothAdapter \u003d BluetoothAdapter.getDefaultAdapter();\r\n}\r\n\r\npublic boolean isBluetoothEnabled() {\r\nif(bluetoothAdapter !\u003d null) return true;\r\n\r\nreturn false;\r\n}\r\n\r\npublic boolean isBluetoothActivated() {\r\nif(bluetoothAdapter \u003d\u003d null) return false;\r\n\r\nreturn bluetoothAdapter.isEnabled();\r\n}\r\n\r\npublic void activateBluetooth() {\r\nIntent intent \u003d new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);\r\nactivity.startActivity(intent);\r\n}\r\n\r\npublic String getRandomUUID() {\r\nreturn String.valueOf(UUID.randomUUID());\r\n}\r\n\r\npublic void getPairedDevices(ArrayList\u003cHashMap\u003cString, Object\u003e\u003e results) {\r\nSet\u003cBluetoothDevice\u003e pairedDevices \u003d bluetoothAdapter.getBondedDevices();\r\n\r\nif(pairedDevices.size() \u003e 0) {\r\nfor(BluetoothDevice device : pairedDevices) {\r\nHashMap\u003cString, Object\u003e result \u003d new HashMap\u003c\u003e();\r\nresult.put(\"name\", device.getName());\r\nresult.put(\"address\", device.getAddress());\r\n\r\nresults.add(result);\r\n}\r\n}\r\n}\r\n\r\npublic void readyConnection(BluetoothConnectionListener listener, String tag) {\r\nif(BluetoothController.getInstance().getState().equals(BluetoothController.STATE_NONE)) {\r\nBluetoothController.getInstance().start(this, listener, tag, UUID.fromString(DEFAULT_UUID), bluetoothAdapter);\r\n}\r\n}\r\n\r\npublic void readyConnection(BluetoothConnectionListener listener, String uuid, String tag) {\r\nif(BluetoothController.getInstance().getState().equals(BluetoothController.STATE_NONE)) {\r\nBluetoothController.getInstance().start(this, listener, tag, UUID.fromString(uuid), bluetoothAdapter);\r\n}\r\n}\r\n\r\n\r\npublic void startConnection(BluetoothConnectionListener listener, String address, String tag) {\r\nBluetoothDevice device \u003d bluetoothAdapter.getRemoteDevice(address);\r\n\r\nBluetoothController.getInstance().connect(device, this, listener, tag, UUID.fromString(DEFAULT_UUID), bluetoothAdapter);\r\n}\r\n\r\npublic void startConnection(BluetoothConnectionListener listener, String uuid, String address, String tag) {\r\nBluetoothDevice device \u003d bluetoothAdapter.getRemoteDevice(address);\r\n\r\nBluetoothController.getInstance().connect(device, this, listener, tag, UUID.fromString(uuid), bluetoothAdapter);\r\n}\r\n\r\npublic void stopConnection(BluetoothConnectionListener listener, String tag) {\r\nBluetoothController.getInstance().stop(this, listener, tag);\r\n}\r\n\r\npublic void sendData(BluetoothConnectionListener listener, String data, String tag) {\r\nString state \u003d BluetoothController.getInstance().getState();\r\n\r\nif(!state.equals(BluetoothController.STATE_CONNECTED)) {\r\nlistener.onConnectionError(tag, state, \"Bluetooth is not connected yet\");\r\nreturn;\r\n}\r\n\r\nBluetoothController.getInstance().write(data.getBytes());\r\n}\r\n\r\npublic Activity getActivity() {\r\nreturn activity;\r\n}\r\n\r\npublic interface BluetoothConnectionListener {\r\nvoid onConnected(String tag, HashMap\u003cString, Object\u003e deviceData);\r\nvoid onDataReceived(String tag, byte[] data, int bytes);\r\nvoid onDataSent(String tag, byte[] data);\r\nvoid onConnectionError(String tag, String connectionState, String message);\r\nvoid onConnectionStopped(String tag);\r\n}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Bluetooth,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "357",
    "title": "Class - BluetoothContoller",
    "about": "",
    "code": "package com.sketch.code.two;\r\n\r\nimport android.bluetooth.BluetoothAdapter;\r\nimport android.bluetooth.BluetoothDevice;\r\nimport android.bluetooth.BluetoothServerSocket;\r\nimport android.bluetooth.BluetoothSocket;\r\n\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r\nimport java.util.HashMap;\r\nimport java.util.UUID;\r\n\r\npublic class BluetoothController {\r\npublic static final String STATE_NONE       \u003d \"none\";\r\npublic static final String STATE_LISTEN     \u003d \"listen\";\r\npublic static final String STATE_CONNECTING \u003d \"connecting\";\r\npublic static final String STATE_CONNECTED  \u003d \"connected\";\r\n\r\nprivate AcceptThread acceptThread;\r\nprivate ConnectThread connectThread;\r\nprivate ConnectedThread connectedThread;\r\n\r\nprivate String state \u003d STATE_NONE;\r\n\r\nprivate static BluetoothController instance;\r\n\r\npublic static synchronized BluetoothController getInstance() {\r\nif(instance \u003d\u003d null) {\r\ninstance \u003d new BluetoothController();\r\n}\r\n\r\nreturn instance;\r\n}\r\n\r\npublic synchronized void start(BluetoothConnect bluetoothConnect, BluetoothConnect.BluetoothConnectionListener listener, String tag, UUID uuid, BluetoothAdapter bluetoothAdapter) {\r\nif (connectThread !\u003d null) {\r\nconnectThread.cancel();\r\nconnectThread \u003d null;\r\n}\r\n\r\nif (connectedThread !\u003d null) {\r\nconnectedThread.cancel();\r\nconnectedThread \u003d null;\r\n}\r\n\r\nif (acceptThread !\u003d null) {\r\nacceptThread.cancel();\r\nacceptThread \u003d null;\r\n}\r\n\r\nacceptThread \u003d new AcceptThread(bluetoothConnect, listener, tag, uuid, bluetoothAdapter);\r\nacceptThread.start();}\r\n\r\npublic synchronized void connect(BluetoothDevice device, BluetoothConnect bluetoothConnect, BluetoothConnect.BluetoothConnectionListener listener, String tag, UUID uuid, BluetoothAdapter bluetoothAdapter) {\r\nif (state.equals(STATE_CONNECTING)) {\r\nif (connectThread !\u003d null) {\r\nconnectThread.cancel();\r\nconnectThread \u003d null;\r\n}\r\n}\r\n\r\nif (connectedThread !\u003d null) {\r\nconnectedThread.cancel();\r\nconnectedThread \u003d null;\r\n}\r\n\r\nconnectThread \u003d new ConnectThread(device, bluetoothConnect, listener, tag, uuid, bluetoothAdapter);\r\nconnectThread.start();\r\n}\r\n\r\npublic synchronized void connected(BluetoothSocket socket, final BluetoothDevice device, BluetoothConnect bluetoothConnect, final BluetoothConnect.BluetoothConnectionListener listener, final String tag) {\r\nif (connectThread !\u003d null) {\r\nconnectThread.cancel();\r\nconnectThread \u003d null;\r\n}\r\n\r\nif (connectedThread !\u003d null) {\r\nconnectedThread.cancel();\r\nconnectedThread \u003d null;\r\n}\r\n\r\nif (acceptThread !\u003d null) {\r\nacceptThread.cancel();\r\nacceptThread \u003d null;\r\n}\r\n\r\nconnectedThread \u003d new ConnectedThread(socket, bluetoothConnect, listener, tag);\r\nconnectedThread.start();\r\n\r\nbluetoothConnect.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nHashMap\u003cString, Object\u003e deviceMap \u003d new HashMap\u003c\u003e();\r\ndeviceMap.put(\"name\", device.getName());\r\ndeviceMap.put(\"address\", device.getAddress());\r\n\r\nlistener.onConnected(tag, deviceMap);\r\n}\r\n});\r\n}\r\n\r\npublic synchronized void stop(BluetoothConnect bluetoothConnect, final BluetoothConnect.BluetoothConnectionListener listener, final String tag) {\r\nif (connectThread !\u003d null) {\r\nconnectThread.cancel();\r\nconnectThread \u003d null;\r\n}\r\n\r\nif (connectedThread !\u003d null) {\r\nconnectedThread.cancel();\r\nconnectedThread \u003d null;\r\n}\r\n\r\nif (acceptThread !\u003d null) {\r\nacceptThread.cancel();\r\nacceptThread \u003d null;\r\n}\r\n\r\nstate \u003d STATE_NONE;\r\n\r\nbluetoothConnect.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nlistener.onConnectionStopped(tag);\r\n}\r\n});\r\n}\r\n\r\npublic void write(byte[] out) {\r\nConnectedThread r;\r\n\r\nsynchronized (this) {\r\nif (!state.equals(STATE_CONNECTED)) return;\r\nr \u003d connectedThread;\r\n}\r\n\r\nr.write(out);\r\n}\r\n\r\npublic void connectionFailed(BluetoothConnect bluetoothConnect, final BluetoothConnect.BluetoothConnectionListener listener, final String tag, final String message) {\r\nstate \u003d STATE_NONE;\r\n\r\nbluetoothConnect.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nlistener.onConnectionError(tag, state, message);\r\n}\r\n});\r\n}\r\n\r\npublic void connectionLost(BluetoothConnect bluetoothConnect, final BluetoothConnect.BluetoothConnectionListener listener, final String tag) {\r\nstate \u003d STATE_NONE;\r\n\r\nbluetoothConnect.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nlistener.onConnectionError(tag, state, \"Bluetooth connection is disconnected\");\r\n}\r\n});\r\n}\r\n\r\npublic String getState() {\r\nreturn state;\r\n}\r\n\r\nprivate class AcceptThread extends Thread {\r\nprivate BluetoothServerSocket serverSocket;\r\n\r\nprivate BluetoothConnect bluetoothConnect;\r\nprivate BluetoothConnect.BluetoothConnectionListener listener;\r\nprivate String tag;\r\n\r\npublic AcceptThread(BluetoothConnect bluetoothConnect, BluetoothConnect.BluetoothConnectionListener listener, String tag, UUID uuid, BluetoothAdapter bluetoothAdapter) {\r\nthis.bluetoothConnect \u003d bluetoothConnect;\r\nthis.listener \u003d listener;\r\nthis.tag \u003d tag;\r\n\r\ntry {\r\nserverSocket \u003d bluetoothAdapter.listenUsingRfcommWithServiceRecord(tag, uuid);\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n\r\nstate \u003d STATE_LISTEN;\r\n}\r\n\r\n@Override\r\npublic void run() {\r\nBluetoothSocket bluetoothSocket;\r\n\r\nwhile (!state.equals(STATE_CONNECTED)) {\r\ntry {\r\nbluetoothSocket \u003d serverSocket.accept();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\nbreak;\r\n}\r\n\r\nif (bluetoothSocket !\u003d null) {\r\nsynchronized (BluetoothController.this) {\r\nswitch (state) {\r\ncase STATE_LISTEN:\r\ncase STATE_CONNECTING:\r\nconnected(bluetoothSocket, bluetoothSocket.getRemoteDevice(), bluetoothConnect, listener, tag);\r\nbreak;\r\ncase STATE_NONE:\r\ncase STATE_CONNECTED:\r\ntry {\r\nbluetoothSocket.close();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\nbreak;\r\n}\r\n}\r\n}\r\n}\r\n}\r\n\r\npublic void cancel() {\r\ntry {\r\nserverSocket.close();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n\r\nprivate class ConnectThread extends Thread {\r\nprivate BluetoothDevice device;\r\nprivate BluetoothSocket socket;\r\n\r\nprivate BluetoothConnect bluetoothConnect;\r\nprivate BluetoothConnect.BluetoothConnectionListener listener;\r\nprivate String tag;\r\nprivate BluetoothAdapter bluetoothAdapter;\r\n\r\npublic ConnectThread(BluetoothDevice device, BluetoothConnect bluetoothConnect, BluetoothConnect.BluetoothConnectionListener listener, String tag, UUID uuid, BluetoothAdapter bluetoothAdapter) {\r\nthis.device \u003d device;\r\nthis.bluetoothConnect \u003d bluetoothConnect;\r\nthis.listener \u003d listener;\r\nthis.tag \u003d tag;\r\nthis.bluetoothAdapter \u003d bluetoothAdapter;\r\n\r\ntry {\r\nsocket \u003d device.createRfcommSocketToServiceRecord(uuid);\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n\r\nstate \u003d STATE_CONNECTING;\r\n}\r\n\r\n@Override\r\npublic void run() {\r\nbluetoothAdapter.cancelDiscovery();\r\n\r\ntry {\r\nsocket.connect();\r\n} catch (Exception e) {\r\ntry {\r\nsocket.close();\r\n} catch (Exception e2) {\r\ne2.printStackTrace();\r\n}\r\nconnectionFailed(bluetoothConnect, listener, tag, e.getMessage());\r\nreturn;\r\n}\r\n\r\nsynchronized (BluetoothController.this) {\r\nconnectThread \u003d null;\r\n}\r\n\r\nconnected(socket, device, bluetoothConnect, listener, tag);\r\n}\r\n\r\npublic void cancel() {\r\ntry {\r\nsocket.close();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n\r\nprivate class ConnectedThread extends Thread {\r\nprivate BluetoothSocket socket;\r\nprivate InputStream inputStream;\r\nprivate OutputStream outputStream;\r\n\r\nprivate BluetoothConnect bluetoothConnect;\r\nprivate BluetoothConnect.BluetoothConnectionListener listener;\r\nprivate String tag;\r\n\r\npublic ConnectedThread(BluetoothSocket socket, BluetoothConnect bluetoothConnect, BluetoothConnect.BluetoothConnectionListener listener, String tag) {\r\nthis.bluetoothConnect \u003d bluetoothConnect;\r\nthis.listener \u003d listener;\r\nthis.tag \u003d tag;\r\n\r\nthis.socket \u003d socket;\r\n\r\ntry {\r\ninputStream \u003d socket.getInputStream();\r\noutputStream \u003d socket.getOutputStream();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n\r\nstate \u003d STATE_CONNECTED;\r\n}\r\n\r\npublic void run() {\r\nwhile (state.equals(STATE_CONNECTED)) {\r\ntry {\r\nfinal byte[] buffer \u003d new byte[1024];\r\nfinal int bytes \u003d inputStream.read(buffer);\r\n\r\nbluetoothConnect.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nlistener.onDataReceived(tag, buffer, bytes);\r\n}\r\n});\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\nconnectionLost(bluetoothConnect, listener, tag);\r\nbreak;\r\n}\r\n}\r\n}\r\n\r\npublic void write(final byte[] buffer) {\r\ntry {\r\noutputStream.write(buffer);\r\n\r\nbluetoothConnect.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nlistener.onDataSent(tag, buffer);\r\n}\r\n});\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n\r\npublic void cancel() {\r\ntry {\r\nsocket.close();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Bluetooth,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "358",
    "title": "Class - FileUtil",
    "about": "",
    "code": "package com.sketch.code.two;\r\n\r\nimport android.content.ContentResolver;\r\nimport android.content.ContentUris;\r\nimport android.content.Context;\r\nimport android.database.Cursor;\r\nimport android.graphics.Bitmap;\r\nimport android.graphics.BitmapFactory;\r\nimport android.graphics.Canvas;\r\nimport android.graphics.ColorFilter;\r\nimport android.graphics.ColorMatrix;\r\nimport android.graphics.ColorMatrixColorFilter;\r\nimport android.graphics.LightingColorFilter;\r\nimport android.graphics.Matrix;\r\nimport android.graphics.Paint;\r\nimport android.graphics.PorterDuff;\r\nimport android.graphics.PorterDuffXfermode;\r\nimport android.graphics.Rect;\r\nimport android.graphics.RectF;\r\nimport android.media.ExifInterface;\r\nimport android.net.Uri;\r\nimport android.os.Environment;\r\nimport android.provider.DocumentsContract;\r\nimport android.provider.MediaStore;\r\nimport android.text.TextUtils;\r\n\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.FileReader;\r\nimport java.io.FileWriter;\r\nimport java.io.IOException;\r\nimport java.net.URLDecoder;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\n\r\npublic class FileUtil {\r\n\r\nprivate static void createNewFile(String path) {\r\nint lastSep \u003d path.lastIndexOf(File.separator);\r\nif (lastSep \u003e 0) {\r\nString dirPath \u003d path.substring(0, lastSep);\r\nmakeDir(dirPath);\r\n}\r\n\r\nFile file \u003d new File(path);\r\n\r\ntry {\r\nif (!file.exists())\r\nfile.createNewFile();\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n\r\npublic static String readFile(String path) {\r\ncreateNewFile(path);\r\n\r\nStringBuilder sb \u003d new StringBuilder();\r\nFileReader fr \u003d null;\r\ntry {\r\nfr \u003d new FileReader(new File(path));\r\n\r\nchar[] buff \u003d new char[1024];\r\nint length \u003d 0;\r\n\r\nwhile ((length \u003d fr.read(buff)) \u003e 0) {\r\nsb.append(new String(buff, 0, length));\r\n}\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n} finally {\r\nif (fr !\u003d null) {\r\ntry {\r\nfr.close();\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n\r\nreturn sb.toString();\r\n}\r\n\r\npublic static void writeFile(String path, String str) {\r\ncreateNewFile(path);\r\nFileWriter fileWriter \u003d null;\r\n\r\ntry {\r\nfileWriter \u003d new FileWriter(new File(path), false);\r\nfileWriter.write(str);\r\nfileWriter.flush();\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n} finally {\r\ntry {\r\nif (fileWriter !\u003d null)\r\nfileWriter.close();\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n\r\npublic static void copyFile(String sourcePath, String destPath) {\r\nif (!isExistFile(sourcePath)) return;\r\ncreateNewFile(destPath);\r\n\r\nFileInputStream fis \u003d null;\r\nFileOutputStream fos \u003d null;\r\n\r\ntry {\r\nfis \u003d new FileInputStream(sourcePath);\r\nfos \u003d new FileOutputStream(destPath, false);\r\n\r\nbyte[] buff \u003d new byte[1024];\r\nint length \u003d 0;\r\n\r\nwhile ((length \u003d fis.read(buff)) \u003e 0) {\r\nfos.write(buff, 0, length);\r\n}\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n} finally {\r\nif (fis !\u003d null) {\r\ntry {\r\nfis.close();\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n}\r\n}\r\nif (fos !\u003d null) {\r\ntry {\r\nfos.close();\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n}\r\n\r\npublic static void moveFile(String sourcePath, String destPath) {\r\ncopyFile(sourcePath, destPath);\r\ndeleteFile(sourcePath);\r\n}\r\n\r\npublic static void deleteFile(String path) {\r\nFile file \u003d new File(path);\r\n\r\nif (!file.exists()) return;\r\n\r\nif (file.isFile()) {\r\nfile.delete();\r\nreturn;\r\n}\r\n\r\nFile[] fileArr \u003d file.listFiles();\r\n\r\nif (fileArr !\u003d null) {\r\nfor (File subFile : fileArr) {\r\nif (subFile.isDirectory()) {\r\ndeleteFile(subFile.getAbsolutePath());\r\n}\r\n\r\nif (subFile.isFile()) {\r\nsubFile.delete();\r\n}\r\n}\r\n}\r\n\r\nfile.delete();\r\n}\r\n\r\npublic static boolean isExistFile(String path) {\r\nFile file \u003d new File(path);\r\nreturn file.exists();\r\n}\r\n\r\npublic static void makeDir(String path) {\r\nif (!isExistFile(path)) {\r\nFile file \u003d new File(path);\r\nfile.mkdirs();\r\n}\r\n}\r\n\r\npublic static void listDir(String path, ArrayList\u003cString\u003e list) {\r\nFile dir \u003d new File(path);\r\nif (!dir.exists() || dir.isFile()) return;\r\n\r\nFile[] listFiles \u003d dir.listFiles();\r\nif (listFiles \u003d\u003d null || listFiles.length \u003c\u003d 0) return;\r\n\r\nif (list \u003d\u003d null) return;\r\nlist.clear();\r\nfor (File file : listFiles) {\r\nlist.add(file.getAbsolutePath());\r\n}\r\n}\r\n\r\npublic static boolean isDirectory(String path) {\r\nif (!isExistFile(path)) return false;\r\nreturn new File(path).isDirectory();\r\n}\r\n\r\npublic static boolean isFile(String path) {\r\nif (!isExistFile(path)) return false;\r\nreturn new File(path).isFile();\r\n}\r\n\r\npublic static long getFileLength(String path) {\r\nif (!isExistFile(path)) return 0;\r\nreturn new File(path).length();\r\n}\r\n\r\npublic static String getExternalStorageDir() {\r\nreturn Environment.getExternalStorageDirectory().getAbsolutePath();\r\n}\r\n\r\npublic static String getPackageDataDir(Context context) {\r\nreturn context.getExternalFilesDir(null).getAbsolutePath();\r\n}\r\n\r\npublic static String getPublicDir(String type) {\r\nreturn Environment.getExternalStoragePublicDirectory(type).getAbsolutePath();\r\n}\r\n\r\npublic static String convertUriToFilePath(final Context context, final Uri uri) {\r\nString path \u003d null;\r\nif (DocumentsContract.isDocumentUri(context, uri)) {\r\nif (isExternalStorageDocument(uri)) {\r\nfinal String docId \u003d DocumentsContract.getDocumentId(uri);\r\nfinal String[] split \u003d docId.split(\":\");\r\nfinal String type \u003d split[0];\r\n\r\nif (\"primary\".equalsIgnoreCase(type)) {\r\npath \u003d Environment.getExternalStorageDirectory() + \"/\" + split[1];\r\n}\r\n} else if (isDownloadsDocument(uri)) {\r\nfinal String id \u003d DocumentsContract.getDocumentId(uri);\r\n\r\nif (!TextUtils.isEmpty(id)) {\r\nif (id.startsWith(\"raw:\")) {\r\nreturn id.replaceFirst(\"raw:\", \"\");\r\n}\r\n}\r\n\r\nfinal Uri contentUri \u003d ContentUris\r\n.withAppendedId(Uri.parse(\"content://downloads/public_downloads\"), Long.valueOf(id));\r\n\r\npath \u003d getDataColumn(context, contentUri, null, null);\r\n} else if (isMediaDocument(uri)) {\r\nfinal String docId \u003d DocumentsContract.getDocumentId(uri);\r\nfinal String[] split \u003d docId.split(\":\");\r\nfinal String type \u003d split[0];\r\n\r\nUri contentUri \u003d null;\r\nif (\"image\".equals(type)) {\r\ncontentUri \u003d MediaStore.Images.Media.EXTERNAL_CONTENT_URI;\r\n} else if (\"video\".equals(type)) {\r\ncontentUri \u003d MediaStore.Video.Media.EXTERNAL_CONTENT_URI;\r\n} else if (\"audio\".equals(type)) {\r\ncontentUri \u003d MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;\r\n}\r\n\r\nfinal String selection \u003d MediaStore.Audio.Media._ID + \"\u003d?\";\r\nfinal String[] selectionArgs \u003d new String[]{\r\nsplit[1]\r\n};\r\n\r\npath \u003d getDataColumn(context, contentUri, selection, selectionArgs);\r\n}\r\n} else if (ContentResolver.SCHEME_CONTENT.equalsIgnoreCase(uri.getScheme())) {\r\npath \u003d getDataColumn(context, uri, null, null);\r\n} else if (ContentResolver.SCHEME_FILE.equalsIgnoreCase(uri.getScheme())) {\r\npath \u003d uri.getPath();\r\n}\r\n\r\nif (path !\u003d null) {\r\ntry {\r\nreturn URLDecoder.decode(path, \"UTF-8\");\r\n}catch(Exception e){\r\nreturn null;\r\n}\r\n}\r\nreturn null;\r\n}\r\n\r\nprivate static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {\r\nCursor cursor \u003d null;\r\n\r\nfinal String column \u003d MediaStore.Images.Media.DATA;\r\nfinal String[] projection \u003d {\r\ncolumn\r\n};\r\n\r\ntry {\r\ncursor \u003d context.getContentResolver().query(uri, projection, selection, selectionArgs, null);\r\nif (cursor !\u003d null \u0026\u0026 cursor.moveToFirst()) {\r\nfinal int column_index \u003d cursor.getColumnIndexOrThrow(column);\r\nreturn cursor.getString(column_index);\r\n}\r\n} catch (Exception e) {\r\n\r\n} finally {\r\nif (cursor !\u003d null) {\r\ncursor.close();\r\n}\r\n}\r\nreturn null;\r\n}\r\n\r\n\r\nprivate static boolean isExternalStorageDocument(Uri uri) {\r\nreturn \"com.android.externalstorage.documents\".equals(uri.getAuthority());\r\n}\r\n\r\nprivate static boolean isDownloadsDocument(Uri uri) {\r\nreturn \"com.android.providers.downloads.documents\".equals(uri.getAuthority());\r\n}\r\n\r\nprivate static boolean isMediaDocument(Uri uri) {\r\nreturn \"com.android.providers.media.documents\".equals(uri.getAuthority());\r\n}\r\n\r\nprivate static void saveBitmap(Bitmap bitmap, String destPath) {\r\nFileOutputStream out \u003d null;\r\nFileUtil.createNewFile(destPath);\r\ntry {\r\nout \u003d new FileOutputStream(new File(destPath));\r\nbitmap.compress(Bitmap.CompressFormat.PNG, 100, out);\r\n} catch (Exception e) {\r\ne.printStackTrace();\r\n} finally {\r\ntry {\r\nif (out !\u003d null) {\r\nout.close();\r\n}\r\n} catch (IOException e) {\r\ne.printStackTrace();\r\n}\r\n}\r\n}\r\n\r\npublic static Bitmap getScaledBitmap(String path, int max) {\r\nBitmap src \u003d BitmapFactory.decodeFile(path);\r\n\r\nint width \u003d src.getWidth();\r\nint height \u003d src.getHeight();\r\nfloat rate \u003d 0.0f;\r\n\r\nif (width \u003e height) {\r\nrate \u003d max / (float) width;\r\nheight \u003d (int) (height * rate);\r\nwidth \u003d max;\r\n} else {\r\nrate \u003d max / (float) height;\r\nwidth \u003d (int) (width * rate);\r\nheight \u003d max;\r\n}\r\n\r\nreturn Bitmap.createScaledBitmap(src, width, height, true);\r\n}\r\n\r\npublic static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {\r\nfinal int width \u003d options.outWidth;\r\nfinal int height \u003d options.outHeight;\r\nint inSampleSize \u003d 1;\r\n\r\nif (height \u003e reqHeight || width \u003e reqWidth) {\r\nfinal int halfHeight \u003d height / 2;\r\nfinal int halfWidth \u003d width / 2;\r\n\r\nwhile ((halfHeight / inSampleSize) \u003e\u003d reqHeight \u0026\u0026 (halfWidth / inSampleSize) \u003e\u003d reqWidth) {\r\ninSampleSize *\u003d 2;\r\n}\r\n}\r\n\r\nreturn inSampleSize;\r\n}\r\n\r\npublic static Bitmap decodeSampleBitmapFromPath(String path, int reqWidth, int reqHeight) {\r\nfinal BitmapFactory.Options options \u003d new BitmapFactory.Options();\r\noptions.inJustDecodeBounds \u003d true;\r\nBitmapFactory.decodeFile(path, options);\r\n\r\noptions.inSampleSize \u003d calculateInSampleSize(options, reqWidth, reqHeight);\r\n\r\noptions.inJustDecodeBounds \u003d false;\r\nreturn BitmapFactory.decodeFile(path, options);\r\n}\r\n\r\npublic static void resizeBitmapFileRetainRatio(String fromPath, String destPath, int max) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap bitmap \u003d getScaledBitmap(fromPath, max);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void resizeBitmapFileToSquare(String fromPath, String destPath, int max) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nBitmap bitmap \u003d Bitmap.createScaledBitmap(src, max, max, true);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void resizeBitmapFileToCircle(String fromPath, String destPath) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nBitmap bitmap \u003d Bitmap.createBitmap(src.getWidth(),\r\nsrc.getHeight(), Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(bitmap);\r\n\r\nfinal int color \u003d 0xff424242;\r\nfinal Paint paint \u003d new Paint();\r\nfinal Rect rect \u003d new Rect(0, 0, src.getWidth(), src.getHeight());\r\n\r\npaint.setAntiAlias(true);\r\ncanvas.drawARGB(0, 0, 0, 0);\r\npaint.setColor(color);\r\ncanvas.drawCircle(src.getWidth() / 2, src.getHeight() / 2,\r\nsrc.getWidth() / 2, paint);\r\npaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));\r\ncanvas.drawBitmap(src, rect, rect, paint);\r\n\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void resizeBitmapFileWithRoundedBorder(String fromPath, String destPath, int pixels) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nBitmap bitmap \u003d Bitmap.createBitmap(src.getWidth(), src\r\n.getHeight(), Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(bitmap);\r\n\r\nfinal int color \u003d 0xff424242;\r\nfinal Paint paint \u003d new Paint();\r\nfinal Rect rect \u003d new Rect(0, 0, src.getWidth(), src.getHeight());\r\nfinal RectF rectF \u003d new RectF(rect);\r\nfinal float roundPx \u003d pixels;\r\n\r\npaint.setAntiAlias(true);\r\ncanvas.drawARGB(0, 0, 0, 0);\r\npaint.setColor(color);\r\ncanvas.drawRoundRect(rectF, roundPx, roundPx, paint);\r\n\r\npaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));\r\ncanvas.drawBitmap(src, rect, rect, paint);\r\n\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void cropBitmapFileFromCenter(String fromPath, String destPath, int w, int h) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\n\r\nint width \u003d src.getWidth();\r\nint height \u003d src.getHeight();\r\n\r\nif (width \u003c w \u0026\u0026 height \u003c h)\r\nreturn;\r\n\r\nint x \u003d 0;\r\nint y \u003d 0;\r\n\r\nif (width \u003e w)\r\nx \u003d (width - w) / 2;\r\n\r\nif (height \u003e h)\r\ny \u003d (height - h) / 2;\r\n\r\nint cw \u003d w;\r\nint ch \u003d h;\r\n\r\nif (w \u003e width)\r\ncw \u003d width;\r\n\r\nif (h \u003e height)\r\nch \u003d height;\r\n\r\nBitmap bitmap \u003d Bitmap.createBitmap(src, x, y, cw, ch);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void rotateBitmapFile(String fromPath, String destPath, float angle) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nMatrix matrix \u003d new Matrix();\r\nmatrix.postRotate(angle);\r\nBitmap bitmap \u003d Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void scaleBitmapFile(String fromPath, String destPath, float x, float y) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nMatrix matrix \u003d new Matrix();\r\nmatrix.postScale(x, y);\r\n\r\nint w \u003d src.getWidth();\r\nint h \u003d src.getHeight();\r\n\r\nBitmap bitmap \u003d Bitmap.createBitmap(src, 0, 0, w, h, matrix, true);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void skewBitmapFile(String fromPath, String destPath, float x, float y) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nMatrix matrix \u003d new Matrix();\r\nmatrix.postSkew(x, y);\r\n\r\nint w \u003d src.getWidth();\r\nint h \u003d src.getHeight();\r\n\r\nBitmap bitmap \u003d Bitmap.createBitmap(src, 0, 0, w, h, matrix, true);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void setBitmapFileColorFilter(String fromPath, String destPath, int color) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nBitmap bitmap \u003d Bitmap.createBitmap(src, 0, 0,\r\nsrc.getWidth() - 1, src.getHeight() - 1);\r\nPaint p \u003d new Paint();\r\nColorFilter filter \u003d new LightingColorFilter(color, 1);\r\np.setColorFilter(filter);\r\nCanvas canvas \u003d new Canvas(bitmap);\r\ncanvas.drawBitmap(bitmap, 0, 0, p);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void setBitmapFileBrightness(String fromPath, String destPath, float brightness) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nColorMatrix cm \u003d new ColorMatrix(new float[]\r\n{\r\n1, 0, 0, 0, brightness,\r\n0, 1, 0, 0, brightness,\r\n0, 0, 1, 0, brightness,\r\n0, 0, 0, 1, 0\r\n});\r\n\r\nBitmap bitmap \u003d Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());\r\nCanvas canvas \u003d new Canvas(bitmap);\r\nPaint paint \u003d new Paint();\r\npaint.setColorFilter(new ColorMatrixColorFilter(cm));\r\ncanvas.drawBitmap(src, 0, 0, paint);\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static void setBitmapFileContrast(String fromPath, String destPath, float contrast) {\r\nif (!isExistFile(fromPath)) return;\r\nBitmap src \u003d BitmapFactory.decodeFile(fromPath);\r\nColorMatrix cm \u003d new ColorMatrix(new float[]\r\n{\r\ncontrast, 0, 0, 0, 0,\r\n0, contrast, 0, 0, 0,\r\n0, 0, contrast, 0, 0,\r\n0, 0, 0, 1, 0\r\n});\r\n\r\nBitmap bitmap \u003d Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());\r\nCanvas canvas \u003d new Canvas(bitmap);\r\nPaint paint \u003d new Paint();\r\npaint.setColorFilter(new ColorMatrixColorFilter(cm));\r\ncanvas.drawBitmap(src, 0, 0, paint);\r\n\r\nsaveBitmap(bitmap, destPath);\r\n}\r\n\r\npublic static int getJpegRotate(String filePath) {\r\nint rotate \u003d 0;\r\ntry {\r\nExifInterface exif \u003d new ExifInterface(filePath);\r\nint iOrientation \u003d exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);\r\n\r\nswitch (iOrientation) {\r\ncase ExifInterface.ORIENTATION_ROTATE_90:\r\nrotate \u003d 90;\r\nbreak;\r\ncase ExifInterface.ORIENTATION_ROTATE_180:\r\nrotate \u003d 180;\r\nbreak;\r\ncase ExifInterface.ORIENTATION_ROTATE_270:\r\nrotate \u003d 270;\r\nbreak;\r\ndefault:\r\nrotate \u003d 0;\r\nbreak;\r\n}\r\n}\r\ncatch (IOException e) {\r\nreturn 0;\r\n}\r\n\r\nreturn rotate;\r\n}\r\npublic static File createNewPictureFile(Context context) {\r\nSimpleDateFormat date \u003d new SimpleDateFormat(\"yyyyMMdd_HHmmss\");\r\nString fileName \u003d date.format(new Date()) + \".jpg\";\r\nFile file \u003d new File(context.getExternalFilesDir(Environment.DIRECTORY_DCIM).getAbsolutePath() + File.separator + fileName);\r\nreturn file;\r\n}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "359",
    "title": "Class - GoogleMapController",
    "about": "",
    "code": "package com.sketch.code.two;\r\n\r\nimport com.google.android.gms.maps.CameraUpdateFactory;\r\nimport com.google.android.gms.maps.GoogleMap;\r\nimport com.google.android.gms.maps.MapView;\r\nimport com.google.android.gms.maps.OnMapReadyCallback;\r\nimport com.google.android.gms.maps.model.BitmapDescriptorFactory;\r\nimport com.google.android.gms.maps.model.LatLng;\r\nimport com.google.android.gms.maps.model.Marker;\r\nimport com.google.android.gms.maps.model.MarkerOptions;\r\n\r\nimport java.util.HashMap;\r\n\r\npublic class GoogleMapController {\r\n\r\nprivate GoogleMap googleMap;\r\nprivate MapView mapView;\r\nprivate HashMap\u003cString, Marker\u003e mapMarker;\r\nprivate GoogleMap.OnMarkerClickListener onMarkerClickListener;\r\n\r\npublic GoogleMapController(MapView mapView, OnMapReadyCallback onMapReadyCallback) {\r\nthis.mapView \u003d mapView;\r\nmapMarker \u003d new HashMap\u003c\u003e();\r\n\r\nthis.mapView.getMapAsync(onMapReadyCallback);\r\n}\r\n\r\npublic void setGoogleMap(GoogleMap googleMap) {\r\nthis.googleMap \u003d googleMap;\r\n\r\nif (onMarkerClickListener !\u003d null) {\r\nthis.googleMap.setOnMarkerClickListener(onMarkerClickListener);\r\n}\r\n}\r\n\r\npublic GoogleMap getGoogleMap() {\r\nreturn googleMap;\r\n}\r\n\r\npublic void setMapType(int _mapType) {\r\nif (googleMap \u003d\u003d null) return;\r\n\r\ngoogleMap.setMapType(_mapType);\r\n}\r\n\r\npublic void setOnMarkerClickListener(GoogleMap.OnMarkerClickListener onMarkerClickListener) {\r\nthis.onMarkerClickListener \u003d onMarkerClickListener;\r\n\r\nif (googleMap !\u003d null) {\r\nthis.googleMap.setOnMarkerClickListener(onMarkerClickListener);\r\n}\r\n}\r\n\r\npublic void addMarker(String id, double lat, double lng) {\r\nif (googleMap \u003d\u003d null) return;\r\n\r\nMarkerOptions markerOptions \u003d new MarkerOptions();\r\nmarkerOptions.position(new LatLng(lat, lng));\r\nMarker marker \u003d googleMap.addMarker(markerOptions);\r\nmarker.setTag(id);\r\nmapMarker.put(id, marker);\r\n}\r\n\r\npublic Marker getMarker(String id) {\r\nreturn mapMarker.get(id);\r\n}\r\n\r\npublic void setMarkerInfo(String id, String title, String snippet) {\r\nMarker marker \u003d mapMarker.get(id);\r\nif (marker \u003d\u003d null) return;\r\n\r\nmarker.setTitle(title);\r\nmarker.setSnippet(snippet);\r\n}\r\n\r\npublic void setMarkerPosition(String id, double lat, double lng) {\r\nMarker marker \u003d mapMarker.get(id);\r\nif (marker \u003d\u003d null) return;\r\n\r\nmarker.setPosition(new LatLng(lat, lng));\r\n}\r\n\r\npublic void setMarkerColor(String id, float color, double alpha) {\r\nMarker marker \u003d mapMarker.get(id);\r\nif (marker \u003d\u003d null) return;\r\n\r\nmarker.setAlpha((float) alpha);\r\nmarker.setIcon(BitmapDescriptorFactory.defaultMarker(color));\r\n}\r\n\r\npublic void setMarkerIcon(String id, int resIcon) {\r\nMarker marker \u003d mapMarker.get(id);\r\nif (marker \u003d\u003d null) return;\r\n\r\nmarker.setIcon(BitmapDescriptorFactory.fromResource(resIcon));\r\n}\r\n\r\npublic void setMarkerVisible(String id, boolean visible) {\r\nMarker marker \u003d mapMarker.get(id);\r\nif (marker \u003d\u003d null) return;\r\n\r\nmarker.setVisible(visible);\r\n}\r\n\r\n\r\npublic void moveCamera(double lat, double lng) {\r\nif (googleMap \u003d\u003d null) return;\r\n\r\ngoogleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat, lng)));\r\n}\r\n\r\npublic void zoomTo(double zoom) {\r\nif (googleMap \u003d\u003d null) return;\r\n\r\ngoogleMap.moveCamera(CameraUpdateFactory.zoomTo((float) zoom));\r\n}\r\n\r\npublic void zoomIn() {\r\nif (googleMap \u003d\u003d null) return;\r\n\r\ngoogleMap.moveCamera(CameraUpdateFactory.zoomIn());\r\n}\r\n\r\npublic void zoomOut() {\r\nif (googleMap \u003d\u003d null) return;\r\n\r\ngoogleMap.moveCamera(CameraUpdateFactory.zoomOut());\r\n}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "360",
    "title": "Class - RequestNetwork",
    "about": "",
    "code": "package com.sketch.code.two;\r\n\r\nimport android.app.Activity;\r\n\r\nimport java.util.HashMap;\r\n\r\npublic class RequestNetwork {\r\nprivate HashMap\u003cString, Object\u003e params \u003d new HashMap\u003c\u003e();\r\nprivate HashMap\u003cString, Object\u003e headers \u003d new HashMap\u003c\u003e();\r\n\r\nprivate Activity activity;\r\n\r\nprivate int requestType \u003d 0;\r\n\r\npublic RequestNetwork(Activity activity) {\r\nthis.activity \u003d activity;\r\n}\r\n\r\npublic void setHeaders(HashMap\u003cString, Object\u003e headers) {\r\nthis.headers \u003d headers;\r\n}\r\n\r\npublic void setParams(HashMap\u003cString, Object\u003e params, int requestType) {\r\nthis.params \u003d params;\r\nthis.requestType \u003d requestType;\r\n}\r\n\r\npublic HashMap\u003cString, Object\u003e getParams() {\r\nreturn params;\r\n}\r\n\r\npublic HashMap\u003cString, Object\u003e getHeaders() {\r\nreturn headers;\r\n}\r\n\r\npublic Activity getActivity() {\r\nreturn activity;\r\n}\r\n\r\npublic int getRequestType() {\r\nreturn requestType;\r\n}\r\n\r\npublic void startRequestNetwork(String method, String url, String tag, RequestListener requestListener) {\r\nRequestNetworkController.getInstance().execute(this, method, url, tag, requestListener);\r\n}\r\n\r\npublic interface RequestListener {\r\npublic void onResponse(String tag, String response);\r\npublic void onErrorResponse(String tag, String message);\r\n}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "361",
    "title": "Class - RequestNetworkController",
    "about": "",
    "code": "package com.sketch.code.two;\r\n\r\nimport com.google.gson.Gson;\r\n\r\nimport java.io.IOException;\r\nimport java.security.cert.CertificateException;\r\nimport java.util.HashMap;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\nimport javax.net.ssl.HostnameVerifier;\r\nimport javax.net.ssl.SSLContext;\r\nimport javax.net.ssl.SSLSession;\r\nimport javax.net.ssl.SSLSocketFactory;\r\nimport javax.net.ssl.TrustManager;\r\nimport javax.net.ssl.X509TrustManager;\r\n\r\nimport okhttp3.Call;\r\nimport okhttp3.Callback;\r\nimport okhttp3.FormBody;\r\nimport okhttp3.Headers;\r\nimport okhttp3.HttpUrl;\r\nimport okhttp3.OkHttpClient;\r\nimport okhttp3.Request;\r\nimport okhttp3.RequestBody;\r\nimport okhttp3.Response;\r\n\r\npublic class RequestNetworkController {\r\npublic static final String GET      \u003d \"GET\";\r\npublic static final String POST     \u003d \"POST\";\r\npublic static final String PUT      \u003d \"PUT\";\r\npublic static final String DELETE   \u003d \"DELETE\";\r\n\r\npublic static final int REQUEST_PARAM \u003d 0;\r\npublic static final int REQUEST_BODY  \u003d 1;\r\n\r\nprivate static final int SOCKET_TIMEOUT \u003d 15000;\r\nprivate static final int READ_TIMEOUT   \u003d 25000;\r\n\r\nprotected OkHttpClient client;\r\n\r\nprivate static RequestNetworkController mInstance;\r\n\r\npublic static synchronized RequestNetworkController getInstance() {\r\nif(mInstance \u003d\u003d null) {\r\nmInstance \u003d new RequestNetworkController();\r\n}\r\nreturn mInstance;\r\n}\r\n\r\nprivate OkHttpClient getClient() {\r\nif (client \u003d\u003d null) {\r\nOkHttpClient.Builder builder \u003d new OkHttpClient.Builder();\r\n\r\ntry {\r\nfinal TrustManager[] trustAllCerts \u003d new TrustManager[]{\r\nnew X509TrustManager() {\r\n@Override\r\npublic void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)\r\nthrows CertificateException {\r\n}\r\n\r\n@Override\r\npublic void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)\r\nthrows CertificateException {\r\n}\r\n\r\n@Override\r\npublic java.security.cert.X509Certificate[] getAcceptedIssuers() {\r\nreturn new java.security.cert.X509Certificate[]{};\r\n}\r\n}\r\n};\r\n\r\nfinal SSLContext sslContext \u003d SSLContext.getInstance(\"TLS\");\r\nsslContext.init(null, trustAllCerts, new java.security.SecureRandom());\r\nfinal SSLSocketFactory sslSocketFactory \u003d sslContext.getSocketFactory();\r\nbuilder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);\r\nbuilder.connectTimeout(SOCKET_TIMEOUT, TimeUnit.MILLISECONDS);\r\nbuilder.readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS);\r\nbuilder.writeTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS);\r\nbuilder.hostnameVerifier(new HostnameVerifier() {\r\n@Override\r\npublic boolean verify(String hostname, SSLSession session) {\r\nreturn true;\r\n}\r\n});\r\n} catch (Exception e) {\r\n}\r\n\r\nclient \u003d builder.build();\r\n}\r\n\r\nreturn client;\r\n}\r\n\r\npublic void execute(final RequestNetwork requestNetwork, String method, String url, final String tag, final RequestNetwork.RequestListener requestListener) {\r\nRequest.Builder reqBuilder \u003d new Request.Builder();\r\nHeaders.Builder headerBuilder \u003d new Headers.Builder();\r\n\r\nif(requestNetwork.getHeaders().size() \u003e 0) {\r\nHashMap\u003cString, Object\u003e headers \u003d requestNetwork.getHeaders();\r\n\r\nfor(HashMap.Entry\u003cString, Object\u003e header : headers.entrySet()) {\r\nheaderBuilder.add(header.getKey(), String.valueOf(header.getValue()));\r\n}\r\n}\r\n\r\ntry {\r\nif (requestNetwork.getRequestType() \u003d\u003d REQUEST_PARAM) {\r\nif (method.equals(GET)) {\r\nHttpUrl.Builder httpBuilder;\r\n\r\ntry {\r\nhttpBuilder \u003d HttpUrl.parse(url).newBuilder();\r\n} catch (NullPointerException ne) {\r\nthrow new NullPointerException(\"unexpected url: \" + url);\r\n}\r\n\r\nif (requestNetwork.getParams().size() \u003e 0) {\r\nHashMap\u003cString, Object\u003e params \u003d requestNetwork.getParams();\r\n\r\nfor (HashMap.Entry\u003cString, Object\u003e param : params.entrySet()) {\r\nhttpBuilder.addQueryParameter(param.getKey(), String.valueOf(param.getValue()));\r\n}\r\n}\r\n\r\nreqBuilder.url(httpBuilder.build()).headers(headerBuilder.build()).get();\r\n} else {\r\nFormBody.Builder formBuilder \u003d new FormBody.Builder();\r\nif (requestNetwork.getParams().size() \u003e 0) {\r\nHashMap\u003cString, Object\u003e params \u003d requestNetwork.getParams();\r\n\r\nfor (HashMap.Entry\u003cString, Object\u003e param : params.entrySet()) {\r\nformBuilder.add(param.getKey(), String.valueOf(param.getValue()));\r\n}\r\n}\r\n\r\nRequestBody reqBody \u003d formBuilder.build();\r\n\r\nreqBuilder.url(url).headers(headerBuilder.build()).method(method, reqBody);\r\n}\r\n} else {\r\nRequestBody reqBody \u003d RequestBody.create(okhttp3.MediaType.parse(\"application/json\"), new Gson().toJson(requestNetwork.getParams()));\r\n\r\nif (method.equals(GET)) {\r\nreqBuilder.url(url).headers(headerBuilder.build()).get();\r\n} else {\r\nreqBuilder.url(url).headers(headerBuilder.build()).method(method, reqBody);\r\n}\r\n}\r\n\r\nRequest req \u003d reqBuilder.build();\r\n\r\ngetClient().newCall(req).enqueue(new Callback() {\r\n@Override\r\npublic void onFailure(Call call, final IOException e) {\r\nrequestNetwork.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nrequestListener.onErrorResponse(tag, e.getMessage());\r\n}\r\n});\r\n}\r\n\r\n@Override\r\npublic void onResponse(Call call, final Response response) throws IOException {\r\nfinal String responseBody \u003d response.body().string().trim();\r\nrequestNetwork.getActivity().runOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nrequestListener.onResponse(tag, responseBody);\r\n}\r\n});\r\n}\r\n});\r\n} catch (Exception e) {\r\nrequestListener.onErrorResponse(tag, e.getMessage());\r\n}\r\n}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "9",
    "title": "Class Drawable",
    "about": "\"Replace \"imageview1\" on your imageview id...\"",
    "code": "imageview1.setBackground(Drawables.getSelectableDrawableFor(Color.parseColor(\"#404040\")));\r\nimageview1.setClickable(true);\r\n\r\n}\r\n\r\npublic static class Drawables {\r\n    public static android.graphics.drawable.Drawable getSelectableDrawableFor(int color) {\r\n        if (Build.VERSION.SDK_INT \u003c Build.VERSION_CODES.LOLLIPOP) {\r\n            android.graphics.drawable.StateListDrawable stateListDrawable \u003d new android.graphics.drawable.StateListDrawable();\r\n            stateListDrawable.addState(\r\n                new int[]{android.R.attr.state_pressed},\r\n                new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#ffffff\"))\r\n            );\r\n            stateListDrawable.addState(\r\n                new int[]{android.R.attr.state_focused},\r\n                new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00ffffff\"))\r\n            );\r\n            stateListDrawable.addState(\r\n                new int[]{},\r\n                new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00ffffff\"))\r\n            );\r\n            return stateListDrawable;\r\n        } else {\r\n            android.content.res.ColorStateList pressedColor \u003d android.content.res.ColorStateList.valueOf(color);\r\n            android.graphics.drawable.ColorDrawable defaultColor \u003d new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00ffffff\"));\r\n            \r\nandroid.graphics.drawable.Drawable rippleColor \u003d getRippleColor(color);\r\n            return new android.graphics.drawable.RippleDrawable(\r\n                pressedColor,\r\n                defaultColor,\r\n                rippleColor\r\n            );\r\n        }\r\n    }\r\n\r\n    private static android.graphics.drawable.Drawable getRippleColor(int color) {\r\n        float[] outerRadii \u003d new float[8];\r\n        Arrays.fill(outerRadii, 0);\r\n        android.graphics.drawable.shapes.RoundRectShape r \u003d new android.graphics.drawable.shapes.RoundRectShape(outerRadii, null, null);\r\n        \r\nandroid.graphics.drawable.ShapeDrawable shapeDrawable \u003d new \r\nandroid.graphics.drawable.ShapeDrawable(r);\r\n        shapeDrawable.getPaint().setColor(color);\r\n        return shapeDrawable;\r\n    }\r\n \r\n    private static int lightenOrDarken(int color, double fraction) {\r\n        if (canLighten(color, fraction)) {\r\n            return lighten(color, fraction);\r\n        } else {\r\n            return darken(color, fraction);\r\n        }\r\n    }\r\n \r\n    private static int lighten(int color, double fraction) {\r\n        int red \u003d Color.red(color);\r\n        int green \u003d Color.green(color);\r\n        int blue \u003d Color.blue(color);\r\n        red \u003d lightenColor(red, fraction);\r\n        green \u003d lightenColor(green, fraction);\r\n        blue \u003d lightenColor(blue, fraction);\r\n        int alpha \u003d Color.alpha(color);\r\n        return Color.argb(alpha, red, green, blue);\r\n    }\r\n \r\n    private static int darken(int color, double fraction) {\r\n        int red \u003d Color.red(color);\r\n        int green \u003d Color.green(color);\r\n        int blue \u003d Color.blue(color);\r\n        red \u003d darkenColor(red, fraction);\r\n        green \u003d darkenColor(green, fraction);\r\n        blue \u003d darkenColor(blue, fraction);\r\n        int alpha \u003d Color.alpha(color);\r\n \r\n        return Color.argb(alpha, red, green, blue);\r\n    }\r\n \r\n    private static boolean canLighten(int color, double fraction) {\r\n        int red \u003d Color.red(color);\r\n        int green \u003d Color.green(color);\r\n        int blue \u003d Color.blue(color);\r\n        return canLightenComponent(red, fraction)\r\n            \u0026\u0026 canLightenComponent(green, fraction)\r\n            \u0026\u0026 canLightenComponent(blue, fraction);\r\n    }\r\n \r\n    private static boolean canLightenComponent(int colorComponent, double fraction) {\r\n        int red \u003d Color.red(colorComponent);\r\n        int green \u003d Color.green(colorComponent);\r\n        int blue \u003d Color.blue(colorComponent);\r\n        return red + (red * fraction) \u003c 255\r\n            \u0026\u0026 green + (green * fraction) \u003c 255\r\n            \u0026\u0026 blue + (blue * fraction) \u003c 255;\r\n    }\r\n \r\n    private static int darkenColor(int color, double fraction) {\r\n        return (int) Math.max(color - (color * fraction), 0);\r\n    }\r\n \r\n    private static int lightenColor(int color, double fraction) {\r\n        return (int) Math.min(color + (color * fraction), 255);\r\n    }\r\n}\r\npublic static class CircleDrawables {\r\n    public static android.graphics.drawable.Drawable getSelectableDrawableFor(int color) {\r\n        if (Build.VERSION.SDK_INT \u003c Build.VERSION_CODES.LOLLIPOP) {\r\n            android.graphics.drawable.StateListDrawable stateListDrawable \u003d new android.graphics.drawable.StateListDrawable();\r\n            stateListDrawable.addState(\r\n                new int[]{android.R.attr.state_pressed},\r\n                new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#ffffff\"))\r\n            );\r\n            stateListDrawable.addState(\r\n                new int[]{android.R.attr.state_focused},\r\n                new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00ffffff\"))\r\n            );\r\n            stateListDrawable.addState(\r\n                new int[]{},\r\n                new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00ffffff\"))\r\n            );\r\n            return stateListDrawable;\r\n        } else {\r\n            android.content.res.ColorStateList pressedColor \u003d android.content.res.ColorStateList.valueOf(color);\r\n            android.graphics.drawable.ColorDrawable defaultColor \u003d new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00ffffff\"));\r\n            \r\nandroid.graphics.drawable.Drawable rippleColor \u003d getRippleColor(color);\r\n            return new android.graphics.drawable.RippleDrawable(\r\n                pressedColor,\r\n                defaultColor,\r\n                rippleColor\r\n            );\r\n        }\r\n    }\r\n\r\n    private static android.graphics.drawable.Drawable getRippleColor(int color) {\r\n        float[] outerRadii \u003d new float[180];\r\n        Arrays.fill(outerRadii, 80);\r\n        android.graphics.drawable.shapes.RoundRectShape r \u003d new android.graphics.drawable.shapes.RoundRectShape(outerRadii, null, null);\r\n        \r\nandroid.graphics.drawable.ShapeDrawable shapeDrawable \u003d new \r\nandroid.graphics.drawable.ShapeDrawable(r);\r\n        shapeDrawable.getPaint().setColor(color);\r\n        return shapeDrawable;\r\n    }\r\n \r\n    private static int lightenOrDarken(int color, double fraction) {\r\n        if (canLighten(color, fraction)) {\r\n            return lighten(color, fraction);\r\n        } else {\r\n            return darken(color, fraction);\r\n        }\r\n    }\r\n \r\n    private static int lighten(int color, double fraction) {\r\n        int red \u003d Color.red(color);\r\n        int green \u003d Color.green(color);\r\n        int blue \u003d Color.blue(color);\r\n        red \u003d lightenColor(red, fraction);\r\n        green \u003d lightenColor(green, fraction);\r\n        blue \u003d lightenColor(blue, fraction);\r\n        int alpha \u003d Color.alpha(color);\r\n        return Color.argb(alpha, red, green, blue);\r\n    }\r\n \r\n    private static int darken(int color, double fraction) {\r\n        int red \u003d Color.red(color);\r\n        int green \u003d Color.green(color);\r\n        int blue \u003d Color.blue(color);\r\n        red \u003d darkenColor(red, fraction);\r\n        green \u003d darkenColor(green, fraction);\r\n        blue \u003d darkenColor(blue, fraction);\r\n        int alpha \u003d Color.alpha(color);\r\n \r\n        return Color.argb(alpha, red, green, blue);\r\n    }\r\n \r\n    private static boolean canLighten(int color, double fraction) {\r\n        int red \u003d Color.red(color);\r\n        int green \u003d Color.green(color);\r\n        int blue \u003d Color.blue(color);\r\n        return canLightenComponent(red, fraction)\r\n            \u0026\u0026 canLightenComponent(green, fraction)\r\n            \u0026\u0026 canLightenComponent(blue, fraction);\r\n    }\r\n \r\n    private static boolean canLightenComponent(int colorComponent, double fraction) {\r\n        int red \u003d Color.red(colorComponent);\r\n        int green \u003d Color.green(colorComponent);\r\n        int blue \u003d Color.blue(colorComponent);\r\n        return red + (red * fraction) \u003c 255\r\n            \u0026\u0026 green + (green * fraction) \u003c 255\r\n            \u0026\u0026 blue + (blue * fraction) \u003c 255;\r\n    }\r\n \r\n    private static int darkenColor(int color, double fraction) {\r\n        return (int) Math.max(color - (color * fraction), 0);\r\n    }\r\n \r\n    private static int lightenColor(int color, double fraction) {\r\n        return (int) Math.min(color + (color * fraction), 255);\r\n}\r\n}\r\n\r\npublic void drawableclass() {",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Class",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "363",
    "title": "Clear all data of SharedPrefence",
    "about": "Replace data on your name of SharedPrefence",
    "code": "data.edit().clear().apply();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "243",
    "title": "Clear Color Filter Image",
    "about": "",
    "code": "ImageView.clearColorFilter();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "140",
    "title": "Clipboard Get Text",
    "about": "",
    "code": "ClipboardManager clipboard \u003d (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);\r\nyourwidget.setText(clipboard.getText());\r\n// yourwidget is maybe a TextView, EditText, etc",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "407",
    "title": "ClipboardMonitor",
    "about": "ClipboardMonitor",
    "code": "\n//code by Orexot\n\n((android.content.ClipboardManager) getSystemService(getApplicationContext().CLIPBOARD_SERVICE)).addPrimaryClipChangedListener(new android.content.ClipboardManager.OnPrimaryClipChangedListener() {\npublic void onPrimaryClipChanged() {\nshowMessage(\"Hello!\");\nedittext1.setText(\"Copy!\");\n}\n});\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "384",
    "title": "Close keyboard",
    "about": "Add add source directly and paste this code",
    "code": "android.view.inputmethod.InputMethodManager imm \u003d (android.view.inputmethod.InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE); \r\n//Find the currently focused view, so we can grab the correct window token from it. \r\nView view \u003d this.getCurrentFocus();\r\nimm.hideSoftInputFromWindow(view.getWindowToken(), 0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "88",
    "title": "Color Filter Image",
    "about": "",
    "code": "//set color filter on image\r\n_view.setColorFilter(Color.argb(255,0,0,0));\r\n\r\n//remove color filter from image\r\n_view.clearColorFilter();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "263",
    "title": "Color Text in StatusBar",
    "about": "",
    "code": "linear1.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "3",
    "title": "ColorPicker",
    "about": "about in comments... ",
    "code": "public static interface OnColorChangedListener\n\t{\n\t\tpublic void onColorChanged(ColorPicker picker, int color);\n\t}\nclass ColorPicker extends LinearLayout\n{\t\n\tprivate SeekBar r;\n\tprivate SeekBar g;\n\tprivate SeekBar b;\n\tprivate EditText hex;\n\tprivate TextView colorShow;\n\tprivate SeekBar.OnSeekBarChangeListener listener;\n\tprivate OnColorChangedListener l;\n\tpublic ColorPicker(Context c)\n\t{\n\t\tsuper(c);\n\t\tinit();\n\t}\n\t\n\tprivate void init(){\n\t\tsetPadding(16, 16, 16, 16);\n\t\tsetGravity(Gravity.CENTER);\n\t\tsetLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\n\t\tcolorShow \u003d new TextView(getContext());\n\t\tcolorShow.setLayoutParams(new ViewGroup.LayoutParams(60, 60));\n\t\taddView(colorShow);\t\n\t\tlistener \u003d new SeekBar.OnSeekBarChangeListener(){\n\t\t\t@Override\n\t\t\tpublic void onProgressChanged(SeekBar p1, int p2, boolean p3)\n\t\t\t{\n\t\t\t\tint color \u003d Color.rgb(r.getProgress(), g.getProgress(), b.getProgress());\n\t\t\t\tString temp \u003d String.format(\"%1$08x\", color); //sketchware: TODO \"%1$0x\"\n\t\t\t\tString result \u003d temp.substring(2);\n\t\t\t\thex.setText(\"#\" + result);\n\t\t\t\thex.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);\n\t\t\t\tcolorShow.setBackgroundColor(color);\n\t\t\t\t\n\t\t\t\tif(l !\u003d null) l.onColorChanged(ColorPicker.this, color);\n\t\t\t}\n\t\t\t@Override public void onStartTrackingTouch(SeekBar p1){}\n\t\t\t@Override public void onStopTrackingTouch(SeekBar p1){}\n\t\t};\n\t\tLinearLayout lay2 \u003d new LinearLayout(getContext());\n\t\tlay2.setOrientation(VERTICAL);\n\t\tlay2.setPadding(8, 0, 8, 8);\n\t\tlay2.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\n\t\thex \u003d new EditText(getContext());\n\t\tViewGroup.MarginLayoutParams params \u003d new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);\n\t\tparams.setMargins(16, 0, 16, 0);\n\t\thex.setLayoutParams(params);\n\t\thex.setImeOptions(android.view.inputmethod.EditorInfo.IME_ACTION_DONE);\n\t\thex.setText(\"#000000\");\n\t\thex.setOnEditorActionListener(new TextView.OnEditorActionListener(){\n\t\t\t\t@Override\n\t\t\t\tpublic boolean onEditorAction(TextView text, int code, KeyEvent event)\n\t\t\t\t{\n\t\t\t\t\ttry {\n\t\t\t\t\t\tint color \u003d Color.parseColor(text.getText().toString());\n\t\t\t\t\t\tr.setProgress(Color.red(color));\n\t\t\t\t\t\tg.setProgress(Color.green(color));\n\t\t\t\t\t\tb.setProgress(Color.blue(color));\n\t\t\t\t\t} catch(Exception e){\n\t\t\t\t\t\tToast.makeText(getContext(), \"Color code is wrong\", Toast.LENGTH_SHORT).show();\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\tlay2.addView(hex);\n\t\tr \u003d new SeekBar(getContext());\n\t\tsetProgressColor(r, 0xffcc5577);\n\t\tr.setMax(255);\n\t\tr.setOnSeekBarChangeListener(listener);\n\t\tlay2.addView(r);\n\t\tg \u003d new SeekBar(getContext());\n\t\tsetProgressColor(g, 0xff339977);\n\t\tg.setMax(255);\n\t\tg.setOnSeekBarChangeListener(listener);\n\t\tlay2.addView(g);\n\t\tb \u003d new SeekBar(getContext());\n\t\tsetProgressColor(b, 0xff6077bb);\n\t\tb.setMax(255);\n\t\tb.setOnSeekBarChangeListener(listener);\n\t\tlay2.addView(b);\n\t\taddView(lay2);\n\t\tint color \u003d Color.parseColor(hex.getText().toString());\n\t\tr.setProgress(Color.red(color));\n\t\tg.setProgress(Color.green(color));\n\t\tb.setProgress(Color.blue(color));\n\t\tcolorShow.setBackgroundColor(color);\n\t}\n\tpublic void setColor(int color)\n\t{\n\t\thex.setText(\"#\" + String.format(\"%1$08x\", color).substring(2));\n\t\tr.setProgress(Color.red(color));\n\t\tg.setProgress(Color.green(color));\n\t\tb.setProgress(Color.blue(color));\n\t}\n\tpublic int getColor(boolean refreshFromSlider)\n\t{\n\t\tif(refreshFromSlider) listener.onProgressChanged(null, 0, false);\n\t\treturn Color.parseColor(hex.getText().toString());\n\t}\n\tpublic int getColor()\n\t{\n\t\treturn getColor(true);\n\t}\n\tpublic void setOnColorChangedListener(OnColorChangedListener l)\n\t{\n\t\tthis.l \u003d l;\n\t}\n\tprivate void setProgressColor(AbsSeekBar bar, int color)\n\t{\n\t\tbar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN); bar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);\n\t}\n}\n\n// ColorPicker coll \u003d new ColorPicker(MainActivity.this);\n// linear1.addView(coll);\n// Set Color: coll.setColor(Color.parseColor(\"#FFFF00\"));\n// To Get Color\ncoll.getColor();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "141",
    "title": "Combine onClickListener and TouchListener",
    "about": "",
    "code": "img.setOnTouchListener(new OnTouchListener() { PointF DownPT \u003d new PointF(); PointF StartPT \u003d new PointF(); @Override public boolean onTouch(View v, MotionEvent event) { int eid \u003d event.getAction(); switch (eid) {\r\n\r\ncase MotionEvent.ACTION_MOVE : PointF mv\u003dnew PointF( event.getX() - DownPT.x, event.getY() - DownPT.y); img.setX((int)(StartPT.x+mv.x)); img.setY((int)(StartPT.y+mv.y)); StartPT\u003d new PointF(img.getX(), img.getY()); break;\r\n\r\ncase MotionEvent.ACTION_DOWN : DownPT.x \u003d event.getX(); DownPT.y \u003d event.getY(); StartPT \u003d new PointF(img.getX(), img.getY() ); break;\r\n\r\ncase MotionEvent.ACTION_UP : float distance \u003d DownPT.x - event.getX(); if (distance \u003d\u003d 0) {\r\n\r\n// intent set screen to another page\r\n\r\nbreak;\r\n}\r\ndefault : break;\r\n}\r\nreturn true;\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "10",
    "title": "Context Menu",
    "about": "",
    "code": "registerForContextMenu(listview1);\r\n}\r\n@Override\r\npublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {\r\nsuper.onCreateContextMenu(menu, v, menuInfo); \r\nmenu.setHeaderTitle(\"Select the Action\"); \r\nmenu.add(0,v.getId(),0,\"Delete\");\r\nmenu.add(0,v.getId(),0,\"UpperCase\"); \r\nmenu.add(0,v.getId(),0,\"LowerCase\");\r\n}\r\n@Override\r\npublic boolean onContextItemSelected(MenuItem item) {\r\nif(item.getTitle()\u003d\u003d\"Delete\") {\r\nToast.makeText(this, \"Delete was pressed\", Toast.LENGTH_SHORT).show();\r\n} else if(item.getTitle()\u003d\u003d\"UpperCase\") {\r\nToast.makeText(this, \"UpperCase was pressed\", Toast.LENGTH_SHORT).show();\r\n} else if(item.getTitle()\u003d\u003d\"LowerCase\") {\r\nToast.makeText(this, \"LowerCase was pressed\", Toast.LENGTH_SHORT).show();\r\n}\r\nreturn true;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "245",
    "title": "Convert Int to String",
    "about": "",
    "code": "Integer.toString(intbyid);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "142",
    "title": "Country code",
    "about": "",
    "code": "try {\r\nvar \u003d ((android.telephony.TelephonyManager) MainActivity.this.getSystemService(Context.TELEPHONY_SERVICE)).getSimCountryIso().toUpperCase();\r\n} catch(Exception e) {\r\nvar \u003d \"Not Found\";\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "45",
    "title": "Create Button",
    "about": "",
    "code": "final Button mybutton \u003d new Button(ProjectinActivity.this); mybutton.setText(\"Your Button\"); mybutton.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT)); mylinear.addView(mybutton)",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "71",
    "title": "Create EditText",
    "about": "",
    "code": "final EditText myedit \u003d new EditText(ProjectinActivity.this); myedit.setHint(\"Your Hint\"); myedit.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT)); mylinear.addView(myedit)",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "143",
    "title": "Create Path",
    "about": "",
    "code": "private static void CreateDir(String path) {\r\n    java.io.File _pathDir \u003d new java.io.File(path);\r\n    if (!_pathDir.exists()) {\r\n        _pathDir.mkdir();\r\n    }\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "144",
    "title": "Create Popup Menu",
    "about": "",
    "code": "PopupMenu popup \u003d new PopupMenu(MainActivity.this, button1);\r\n\r\nMenu menu \u003d popup.getMenu();\r\nmenu.add(\"Aan\");\r\nmenu.add(\"Gabriel\");\r\n\r\n\r\npopup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {\r\n\r\npublic boolean onMenuItemClick(MenuItem item) {\r\nswitch (item.getTitle().toString()) {\r\ncase \"Aan\":\r\nshowMessage(\"Aan clicked\");\r\nreturn true;\r\n\r\ncase \"Gabriel\":\r\nshowMessage(\"Gabriel Clicked\");\r\nreturn true;\r\n\r\ndefault: return false;\r\n}\r\n}\r\n});\r\n\r\n\r\npopup.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "131",
    "title": "Create Progress Bar",
    "about": "",
    "code": "ProgressBar tp \u003d new ProgressBar(this,null, android.R.attr.progressBarStyleHorizontal); linear1.addView(tp,700,30); tp.setIndeterminate(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "132",
    "title": "Create Progress Bar (Circle)",
    "about": "",
    "code": "ProgressBar msg \u003d new ProgressBar(MainActivity.this);  linear1.addView(msg);\r\n\r\n//linear1 is an LinearLayout and MainActivity is your activity",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "133",
    "title": "Create Progress Bar Dialog",
    "about": "",
    "code": "final ProgressDialog prog \u003d new ProgressDialog(MainActivity.this);prog.setMax(100);prog.setTitle(\"Hello\");prog.setMessage(\"Message\");prog.setIndeterminate(true);prog.setCancelable(false);prog.show()",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "145",
    "title": "Create RatingBar",
    "about": "",
    "code": "RatingBar tp \u003d new RatingBar(this); linear1.addView(tp);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "52",
    "title": "Create TextView",
    "about": "",
    "code": "final TextView mytext \u003d new TextView(ProjectinActivity.this); mytext.setText(\"Your Text\"); mytext.setTextColor(0xFF000000); mytext.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT)); mylinear.addView(mytext);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "118",
    "title": "Custom CheckBox",
    "about": "",
    "code": "checkbox1.setButtonDrawable(r.drawable.iconname);\r\n\r\n//iconname is an image",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "305",
    "title": "Custom GridView",
    "about": "",
    "code": "GridView grid \u003d new GridView(this); \r\nлинеар.addView(grid); \r\ngrid.setNumColumns(3); \r\ngrid.setColumnWidth(25); \r\ngrid.setHorizontalSpacing(8); \r\ngrid.setVerticalSpacing(8); \r\ngrid.setAdapter(new GridViewAdapter(nameListMap,\"name of layout\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "87",
    "title": "Customizable notch",
    "about": "The designations are the same as in the first version ... only a couple of things have changed here ...\r\nInnovations in version 2.0:\r\n- Morblock support\r\n- Does not wipe the old background when drawing notch",
    "code": "Notch((int)_width,(int)_height,(int)_rdIn,(int)_rdOut,(int)_offset,_color,_view);\r\n}\r\npublic void Notch(final int width,final int height,final int rdIn,final int rdOut,final int offset,final String color,final View view) {\r\nview.setDrawingCacheEnabled(true);\r\nBitmap bitmap \u003d Bitmap.createBitmap(view.getDrawingCache());\r\nbitmap \u003d loadBitmapFromView(view,view.getWidth(),view.getHeight());\r\nview.setDrawingCacheEnabled(false);\r\nCanvas canvas \u003d new Canvas(bitmap);\r\ndrawCorner(new Rect(-rdOut,-rdOut,rdOut,rdOut),canvas,Color.parseColor(color),270F,canvas.getWidth()/2-width/2-rdOut,0+offset);\r\ndrawMiddle(new Rect(0,0,width,height),canvas,Color.parseColor(color),rdIn,canvas.getWidth()/2-width/2,0+offset);\r\ndrawCorner(new Rect(-rdOut,-rdOut,rdOut,rdOut),canvas,Color.parseColor(color),180F,canvas.getWidth()/2+width/2,0+offset);\r\nandroid.graphics.drawable.BitmapDrawable bkg \u003d new android.graphics.drawable.BitmapDrawable(bitmap);\r\nview.setBackground(bkg);\r\n}\r\npublic static Bitmap loadBitmapFromView(View v, int width, int height) {\r\nBitmap b \u003d Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);\r\nCanvas c \u003d new Canvas(b);\r\nv.layout(0, 0, width, height);\r\nandroid.graphics.drawable.Drawable bgDrawable \u003dv.getBackground();\r\nif (bgDrawable!\u003dnull)\r\nbgDrawable.draw(c);\r\nelse\r\nc.drawColor(Color.WHITE);\r\nv.draw(c);\r\nreturn b;\r\n}\r\npublic static Bitmap rotateBitmap(Bitmap source, float angle) {\r\nMatrix matrix \u003d new Matrix(); matrix.postRotate(angle);\r\nreturn Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);\r\n}\r\npublic void drawMiddle(final Rect rect,final Canvas canvas,final int color,final float round,final float x,final float y) {\r\nBitmap bitmap \u003d Bitmap.createBitmap(rect.width(),rect.height(),Bitmap.Config.ARGB_8888);\r\nPaint paint \u003d new Paint(Paint.ANTI_ALIAS_FLAG);\r\npaint.setColor(color);\r\npaint.setStyle(Paint.Style.FILL);\r\nCanvas canvas1 \u003d new Canvas(bitmap);\r\nPath path \u003d new Path();\r\npath.addRoundRect(new RectF(rect),new float[]{0F,0F,0F,0F,round,round,round,round},Path.Direction.CW);\r\ncanvas1.drawColor(Color.TRANSPARENT);\r\ncanvas1.drawPath(path,paint);\r\ncanvas.drawBitmap(bitmap,x,y,null);\r\n}\r\npublic void drawCorner(final Rect rect,final Canvas canvas,final int color,final float rot,final float x,final float y) {\r\nBitmap bitmap \u003d Bitmap.createBitmap(rect.width()/2,rect.height()/2,Bitmap.Config.ARGB_8888);\r\nCanvas canvas1 \u003d new Canvas(bitmap);\r\nPaint paint \u003d new Paint(Paint.ANTI_ALIAS_FLAG);\r\npaint.setColor(color);\r\npaint.setStyle(Paint.Style.FILL);\r\npaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));\r\ncanvas1.drawColor(color);\r\ncanvas1.drawArc(new RectF(rect),0F,90F,true,paint);\r\ncanvas.drawBitmap(rotateBitmap(bitmap,rot),x,y,null);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "323",
    "title": "Data Picker - Create",
    "about": "",
    "code": "/* Добавляем на экран linear1 */\r\n\r\nDatePicker dp\u003dnew DatePicker(MainActivity.this);\r\n\r\nlinear1.addView(dp);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "325",
    "title": "Data Picker Dialog",
    "about": "",
    "code": "// 1) Добавляем переменную типа string с именем date\r\n// 2) Добавляем объекты imageview1 и textview1\r\n// 3) Добавляем следующие коды:\r\n\r\n// onCreate()\r\n}\r\npublic void showDatePickerDialog(View v) {\r\nDialogFragment newFragment \u003d new DatePickerFragment();\r\nnewFragment.show(getFragmentManager(), \"datePicker\");\r\n}\r\npublic class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {\r\n@Override\r\npublic Dialog onCreateDialog(Bundle savedInstanceState) {\r\nfinal Calendar c \u003d Calendar.getInstance();\r\nint year \u003d c.get(Calendar.YEAR);\r\nint month \u003d c.get(Calendar.MONTH);\r\nint day \u003d c.get(Calendar.DAY_OF_MONTH);\r\nreturn new DatePickerDialog(getActivity(), this, year, month, day);\r\n}\r\npublic void onDateSet(DatePicker view, int year, int month, int day) {\r\nint mon \u003d month +1;\r\ndate \u003d day + \"/\" + mon + \"/\" + year;\r\ntextview1.setText(date);\r\n}\r\n\r\n\r\n//imageview1 onClick()\r\n\r\nshowDatePickerDialog(imageview1);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "366",
    "title": "DataPicker - Component attributes",
    "about": "Add add source directly and paste this code",
    "code": "d: the date of the month without the prefix 0, for example 12.\r\n\r\ndd: date of the month in two digits, for example 12.\r\n\r\nM: month of the year, for example 7.\r\n\r\nMM: a month in a year in two digits, for example 07.\r\n\r\nMMM: the name of the month of the year, displayed as an abbreviation of three letters, for example, July.\r\n\r\nMMMM: The month of the year is displayed as the full name of the month, for example, July.\r\n\r\nMMMMM: the name of the first letter of the month, for example J.\r\n\r\ny: year, for example, 2017.\r\n\r\nyy: the last two digits of the year, for example, 17.\r\n\r\nyyyy: year, for example, 2017.\r\n\r\nh: hour per day in 12-hour format, for example 5.\r\n\r\nhh: an hour per day in two digits, for example 05.\r\n\r\nH: hourly per day in 24-hour format, for example, 17.\r\n\r\nHH: hour per day 24-hour format in two digits.\r\n\r\nm: minutes per hour.\r\n\r\nmm: minutes per hour in two digits.\r\n\r\ns: seconds per minute.\r\n\r\nss: seconds per minute in two digits.\r\n\r\nS: displays 1/10 of a second in the second.\r\n\r\nSS: displays two digits of 1/100 second.\r\n\r\nSSS: displays milliseconds in the second.\r\n\r\na: displays AM / PM.\r\n\r\nG: era, for example, AD.\r\n\r\nw: Displays the week of the year.\r\n\r\nW: Displays the week in the month.\r\n\r\nD: day of the year.\r\n\r\nF: the day of the week in the month, for example, 2 for the date specified above, since this is the second Wednesday of the month.\r\n\r\nE: abbreviation of the day, for example, Mon.\r\n\r\nEEE: the abbreviation of the day, for example, Sub.\r\n\r\nEEEE: the full name of the day, for example, Wednesday.\r\n\r\nEEEEE: the name of the first letter of the day, for example P.\r\n\r\nk: an hour a day, the same as H.\r\n\r\nK: an hour per day in a 12-hour format, the same as h.\r\n\r\nz: time zone, for example, GMT + 05: 30.\r\n\r\nZ: time zone, for example +0530.\r\n\r\nc: displays the name of the day, the same as E.\r\n\r\nL: month of the year. The same as M.",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "324",
    "title": "DataPicker - Data Changed Listener",
    "about": "",
    "code": "// Создаем числовые переменные: i, i1, i2 */\r\n\r\nCalendar calendar \u003d Calendar.getInstance();\r\n\r\ndp.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),new DatePicker.OnDateChangedListener() {\r\n\r\n@Override public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {\r\n\r\nshowMessage(i2+\"/\"+i1+\"/\"+i);\r\n\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "367",
    "title": "DataPicker - onDataChangedListener",
    "about": "Add add source directly and paste this code",
    "code": "// Create number variables: i, i1, i2 */\r\n\r\nCalendar calendar \u003d Calendar.getInstance();\r\n\r\ndp.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),new DatePicker.OnDateChangedListener() {\r\n\r\n@Override public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {\r\n\r\nshowMessage(i2+\"/\"+i1+\"/\"+i);\r\n\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "title": "Detect System theme",
    "about": "",
    "code": "int currentNightMode \u003d getContext().getResources().getConfiguration().uiMode \u0026 Configuration.UI_MODE_NIGHT_MASK;  \n        switch (currentNightMode) {\n            case Configuration.UI_MODE_NIGHT_NO:\n                // Night mode is not active on device\n                break;\n            case Configuration.UI_MODE_NIGHT_YES:\n                // Night mode is active on device\n                break;\n        }    ",
    "AppCompat": "false",
    "language": "Java"
  },
  {
    "id\"": "246",
    "title": "Deboss Text Effect",
    "about": "",
    "code": "EmbossMaskFilter filter \u003d new EmbossMaskFilter(\r\n     new float[]{\n            0f,\n            -1f,\n            0.5f\n        }, // direction of the light source\r\n     0.8f, // ambient light between 0 to 1\r\n     13, // specular highlights\r\n     7.0f // blur before applying lighting\r\n);\r\ntextview1.setLayerType(View.LAYER_TYPE_SOFTWARE,null);\r\ntextview1.getPaint().setMaskFilter(filter);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "297",
    "title": "Decode from Base64",
    "about": "",
    "code": "byte [] barr \u003d java.util.Base64.getDecoder().decode(toEncode);\r\nstring \u003d new String(barr, Charset.forName(\"UTF-8\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "311",
    "title": "Decode string Base64",
    "about": "",
    "code": "byte [] barr \u003d java.util.Base64.getDecoder().decode(toEncode);\r\nstring \u003d new String(barr, Charset.forName(\"UTF-8\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "295",
    "title": "Decode to URL Decoder",
    "about": "",
    "code": "try { code \u003d java.net.URLDecoder.decode(code, \"UTF-8\"); } catch (Exception e) { }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "485",
    "title": "Detect keyboard visibility",
    "about": "Detects when screen has been resized to a certain limit to determine whether the keyboard is visible or not.",
    "code": "View rootView \u003d (View)anylinear.getRootView();\r\nrootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {\r\n\t@Override\r\n\tpublic void onGlobalLayout() {\r\n\t\tint heightDiff \u003d rootView.getRootView().getHeight() - rootView.getHeight();\r\n\r\n\t\tif (heightDiff \u003e 100) { \r\n\t\t\t//keyboard is opened\r\n\t\t} else { \r\n\t\t\t//keyboard is closed\r\n\t\t}\r\n\t}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Utilities",
    "source": "Submitted by Tyron from Android documentation",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "268",
    "title": "Dialog - Custom",
    "about": "",
    "code": "final AlertDialog dialog1 \u003d new AlertDialog.Builder(MainActivity.this).create();\r\nView inflate \u003d getLayoutInflater().inflate(R.layout.custom,null); dialog1.setView(inflate);\r\n\r\n\r\ndialog1.setTitle (\"title\");\r\n\r\n\r\nButton but1 \u003d (Button)inflate.findViewById(R.id.button1);\r\n\r\n\r\nbut1.setOnClickListener(new OnClickListener() { public void onClick(View view) { _Test(); } });\r\n\r\n\r\ndialog1.show();\r\n\r\n\r\n\r\ndialog1.setCancelable(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "457",
    "title": "Dialog - Date Picker",
    "about": "change linear1 to your line and change MainActivity for you activity.",
    "code": "DatePicker dp\u003dnew DatePicker(MainActivity.this);\nlinear1.addView(dp);\nCalendar calendar \u003d Calendar.getInstance();\ndp.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),new DatePicker.OnDateChangedListener(){\n@Override public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {\nToast.makeText(getApplicationContext(),datePicker.getDayOfMonth() + \"-\" +datePicker.getMonth() + \"-\"+datePicker.getYear(),Toast.LENGTH_SHORT).show();\n} });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "286",
    "title": "Dialog - ListView Menu",
    "about": "",
    "code": "{\r\nlist1.add(\"Google\");\r\nlist1.add(\"Yandex\");\r\nlist1.add(\"Yahoo\");\r\nlist1.add(\"Bingo\");\r\n}\r\n\r\n// button1 onClick()\r\n\r\ndialog.setAdapter(new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, list1), new DialogInterface.OnClickListener() {\r\n@Override public void onClick(DialogInterface dia, int _pos) {\r\n\r\ntextview1.setText(list1.get(_pos)); \r\n// txt \u003d list1.get(_pos);\r\n\r\n}\r\n});\r\n\r\ndialog.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Dialog,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "391",
    "title": "Dialog - Rounded",
    "about": "",
    "code": "final AlertDialog dialog \u003d new AlertDialog.Builder(VerificationActivity.this).create();\r\nLayoutInflater inflater \u003d getLayoutInflater();\r\n\r\nView convertView \u003d (View) inflater.inflate(R.layout.mylayout, null);\r\ndialog.setView(convertView);\r\n\r\n\r\n\r\ndialog.requestWindowFeature(Window.FEATURE_NO_TITLE);  dialog.getWindow().setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(Color.TRANSPARENT));\r\n\r\n\r\n\r\ndailog.show();\r\n// TODO",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "451",
    "title": "Dialog - Set Cancelable",
    "about": "This code is to make the Dialog display and not be removed by touching other parts of the outside for what the user must click if or if one of the options inside.",
    "code": "dialog_name.setCancelable(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "472",
    "title": "Dialog - Set Icon",
    "about": "Replace your_dialog with your component name and your_icon_name with your icon name ",
    "code": "your_dialog.setIcon(R.drawable.your_icon_name);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "Submitted by Unknown_Developer",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "483",
    "title": "Dialog Themes",
    "about": "Changes the Dialog Theme.",
    "code": "//Gingerbread theme code\r\nyour_dialog \u003d new AlertDialog.Builder(this,AlertDialog.THEME_TRADITIONAL);\r\n\r\n//Holo dark theme code\r\ndialog \u003d new  AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_DARK);\r\n\r\n//Holo light theme code\r\ndialog \u003d new AlertDialog.Builder(this,AlertDialog.THEME_HOLO_LIGHT);\r\n\r\n//Material dark theme code\r\nsetTheme(android.R.style.Theme_Material);\r\n\r\n//Material light theme code\r\nsetTheme(android.R.style.Theme_Material_Light);\r\n\r\n//Device default dark theme code\r\ndialog \u003d new AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_DARK);\r\n\r\n//Device default light theme code\r\ndialog \u003d new AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "Everthing_Discord#4162",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "262",
    "title": "Digital Clock",
    "about": "",
    "code": "final DigitalClock dc \u003d new DigitalClock(this);\r\nlinear1.addView (dc);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "240",
    "title": "Display Metrics - Screen Size",
    "about": "",
    "code": "DisplayMetrics dm \u003d new DisplayMetrics();\r\n getWindowManager().getDefaultDisplay().getMetrics(dm);\r\n\r\nint width \u003d dm.widthPixels;\r\n\r\nint height \u003d dm.heightPixels;\r\n\r\ntextview1.setText(String.valueOf(height).concat(\" x \".concat(String.valueOf(width))));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "241",
    "title": "Display Metrics - Screen Size (DPI)",
    "about": "",
    "code": "/* Ҏ鎭Ꭽ掭 ꎭ?펭㎭ ?掭?掭掭: density, height, width */\r\n\r\nDisplay display \u003d getWindowManager().getDefaultDisplay();\r\n\r\nDisplayMetrics outMetrics \u003d new DisplayMetrics ();\r\n\r\ndisplay.getMetrics(outMetrics);\r\n\r\nfloat density \u003d getResources().getDisplayMetrics().density;\r\n\r\nfloat height \u003d outMetrics.heightPixels / density;\r\n\r\nfloat width \u003d outMetrics.widthPixels / density;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "138",
    "title": "Dot Progress Tutorial",
    "about": "",
    "code": "final DilatingDotsProgressBar bar \u003d new DilatingDotsProgressBar(this); \r\nbar.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT)); \r\nbar.setDotRadius(5); \r\nbar.setDotColors(Color.RED, Color.BLACK); \r\nbar.setNumberOfDots(3); \r\nbar.setDotScaleMultiplier(1); \r\nbar.setGrowthSpeed(500); \r\nbar.setDotSpacing(4); \r\nlinear1.addView(bar); \r\n\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() { \r\npublic void onClick(View v) { \r\nbar.showNow(); \r\n} \r\n}); \r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() { \r\npublic void onClick(View v) { \r\nbar.hideNow(); \r\n} \r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "303",
    "title": "Draggable Dialog",
    "about": "Example:\r\nDraggableDialog dialog \u003d new DraggableDialog(MainActivity.this,500,500);\r\nView parser \u003d getLayoutInflater().inflate(R.layout.custom,null);\r\ndialog.setView(parser);\r\ndialog.addDragListener(new DragListener() {\r\npublic void onDragStart(View v,DraggableDialog dialog) {\r\nToast.makeText(getApplicationContext(),\"Drag Started\",Toast.LENGTH_SHORT).show();\r\n}\r\npublic void onDrag(View v,DraggableDialog d) {}\r\npublic void onDragEnd(View v,DraggableDialog d) {}\r\n},dialog);\r\ndialog.show();\r\ndialog.setBackgroundColor(Color.RED);\r\ndialog.setY(100);",
    "code": "}\r\npublic interface DragListener {\r\npublic void onDrag(View v,DraggableDialog dialog);\r\npublic void onDragStart(View v,DraggableDialog dialog);\r\npublic void onDragEnd(View v,DraggableDialog dialog);\r\n}\r\npublic class DraggableDialog extends FrameLayout {\r\nprivate View root;\r\nprivate DraggableDialog dialog;\r\npublic DraggableDialog(Context context) {\r\nsuper(context);\r\nroot \u003d this;\r\ndialog \u003d this;\r\nLinearLayout.LayoutParams par \u003d new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);\r\nroot.setLayoutParams(par);\r\n}\r\npublic DraggableDialog(Context context,int width,int height) {\r\nsuper(context);\r\nroot \u003d this;\r\ndialog \u003d this;\r\nLinearLayout.LayoutParams par \u003d new LinearLayout.LayoutParams(width,height);\r\nroot.setLayoutParams(par);\r\n}\r\nvoid addDragListener(final DragListener listener,final View view) {\r\nview.setOnTouchListener(new OnTouchListener() {\r\nPointF DownPT \u003d new PointF();\r\nPointF StartPT \u003d new PointF();\r\n@Override\r\npublic boolean onTouch(View v, MotionEvent event) {\r\nint eid \u003d event.getAction();\r\nswitch (eid) {\r\ncase MotionEvent.ACTION_MOVE:\r\nlistener.onDrag(view,dialog);\r\nPointF mv \u003d new PointF(event.getX() - DownPT.x, event.getY() - DownPT.y);\r\nRect rect \u003d new Rect();\r\ngetWindow().getDecorView().getLocalVisibleRect(rect);\r\nif((StartPT.x+mv.x\u003e\u003drect.left)\u0026\u0026(StartPT.x+mv.x\u003c\u003drect.right-(root.getWidth()))) {\r\nroot.setX((int)(StartPT.x+mv.x));\r\n}\r\nif((StartPT.y+mv.y\u003e\u003drect.top)\u0026\u0026(StartPT.y+mv.y\u003c\u003drect.bottom-(root.getHeight()))) {\r\nroot.setY((int)(StartPT.y+mv.y));\r\n}\r\nStartPT \u003d new PointF(root.getX(), root.getY());\r\nbreak;\r\ncase MotionEvent.ACTION_DOWN :\r\nlistener.onDragStart(view,dialog);\r\nDownPT.x \u003d event.getX();\r\nDownPT.y \u003d event.getY();\r\nStartPT \u003d new PointF(root.getX(), root.getY());\r\nbreak;\r\ncase MotionEvent.ACTION_UP :\r\nlistener.onDragEnd(view,dialog);\r\nbreak;\r\ndefault : break;\r\n}\r\nreturn true;\r\n}\r\n});\r\n}\r\npublic void setView(View view) {\r\nthis.invalidate();\r\nthis.removeAllViews();\r\nthis.addView(view);\r\n}\r\npublic void show() {\r\n((FrameLayout)getWindow().getDecorView()).addView(this);\r\n}\r\npublic void dismiss() {\r\ntry {\r\n((FrameLayout)getWindow().getDecorView()).removeView(this);\r\n} catch(NullPointerException e){}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "304",
    "title": "Draggable Dialog 2",
    "about": "",
    "code": "}\r\npublic interface DragListener {\r\npublic void onDrag(View v,DraggableDialog dialog);\r\npublic void onDragStart(View v,DraggableDialog dialog);\r\npublic void onDragEnd(View v,DraggableDialog dialog);\r\n}\r\npublic class DraggableDialog extends FrameLayout {\r\nprivate View root;\r\nprivate DraggableDialog dialog;\r\npublic DraggableDialog(Context context) {\r\nsuper(context);\r\nroot \u003d this;\r\ndialog \u003d this;\r\nLinearLayout.LayoutParams par \u003d new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);\r\nroot.setLayoutParams(par);\r\n}\r\npublic DraggableDialog(Context context,int width,int height) {\r\nsuper(context);\r\nroot \u003d this;\r\ndialog \u003d this;\r\nLinearLayout.LayoutParams par \u003d new LinearLayout.LayoutParams(width,height);\r\nroot.setLayoutParams(par);\r\n}\r\nvoid addDragListener(final DragListener listener,final View view) {\r\nview.setOnTouchListener(new OnTouchListener() {\r\nPointF DownPT \u003d new PointF();\r\nPointF StartPT \u003d new PointF();\r\n@Override\r\npublic boolean onTouch(View v, MotionEvent event) {\r\nint eid \u003d event.getAction();\r\nswitch (eid) {\r\ncase MotionEvent.ACTION_MOVE:\r\nlistener.onDrag(view,dialog);\r\nPointF mv \u003d new PointF(event.getX() - DownPT.x, event.getY() - DownPT.y);\r\nRect rect \u003d new Rect();\r\nroot.getParent().getLocalVisibleRect(rect);\r\nif((StartPT.x+mv.x\u003e\u003drect.left)\u0026\u0026(StartPT.x+mv.x\u003c\u003drect.right-(root.getWidth()))) {\r\nroot.setX((int)(StartPT.x+mv.x));\r\n} else {\r\nif(!(StartPT.x+mv.x\u003e\u003drect.left)) {\r\nroot.setX(root.getParent().getX());\r\n}\r\nif(!(StartPT.x+mv.x\u003c\u003drect.right-root.getWidth())) {\r\nroot.setX(root.getParent().getX()+root.getParent().getWidth()-root.getWidth());\r\n}\r\n}\r\nif((StartPT.y+mv.y\u003e\u003drect.top)\u0026\u0026(StartPT.y+mv.y\u003c\u003drect.bottom-(root.getHeight()))) {\r\nroot.setY((int)(StartPT.y+mv.y));\r\n} else {\r\nif(!(StartPT.y+mv.y\u003e\u003drect.top)) {\r\nroot.setY(root.getParent().getY());\r\n}\r\nif(!(StartPT.y+mv.y\u003c\u003drect.bottom-root.getHeight())) {\r\nroot.setY(root.getParent().getY()+root.getParent().getHeight()-root.getHeight());\r\n}\r\n}\r\nStartPT \u003d new PointF(root.getX(), root.getY());\r\nbreak;\r\ncase MotionEvent.ACTION_DOWN :\r\nlistener.onDragStart(view,dialog);\r\nDownPT.x \u003d event.getX();\r\nDownPT.y \u003d event.getY();\r\nStartPT \u003d new PointF(root.getX(), root.getY());\r\nbreak;\r\ncase MotionEvent.ACTION_UP :\r\nlistener.onDragEnd(view,dialog);\r\nbreak;\r\ndefault : break;\r\n}\r\nreturn true;\r\n}\r\n});\r\n}\r\npublic void setView(View view) {\r\nthis.invalidate();\r\nthis.removeAllViews();\r\nthis.addView(view);\r\n}\r\npublic void show() {\r\n((FrameLayout)getWindow().getDecorView()).addView(this);\r\n}\r\npublic void dismiss() {\r\ntry {\r\n((FrameLayout)getWindow().getDecorView()).removeView(this);\r\n} catch(NullPointerException e){}\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "479",
    "title": "Drawer - Hide an widget",
    "about": "Change \"linear1\" to any view that is in the drawer",
    "code": "_drawer_linear1.setVisibility(View.GONE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Drawer,Widget",
    "source": "Toastcode#0464",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "493",
    "title": "Drawer - Set Text",
    "about": "This code edits text on drawer.",
    "code": "//directly\r\n_drawer_textview1.setText(\"Hello World\");\r\n\r\n//from string\r\nstr \u003d \"Hello World\";\r\n_drawer_textview1.setText(str);\r\n\r\n//from shared preferences\r\n_drawer_textview1.setText(SHAREDPREFERENCE_NAME.getString(\"SHAREDPREFERENCE_KEY\", \"\"))\r\n\r\n//protip: just add _drawer_yourwidget to code if you want to make it work on drawer in Sketchware",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "Submitted by ToastcodeDev",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "210",
    "title": "Drawing in Linear",
    "about": "",
    "code": "dv \u003d new DrawingView(this);linear1.addView(dv); mPaint \u003d new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(12); }\r\n\r\nDrawingView dv ; private Paint mPaint;\r\n\r\npublic class DrawingView extends View { public int width;\r\npublic int height;\r\nprivate Bitmap mBitmap;\r\nprivate Canvas mCanvas;\r\nprivate Path mPath;\r\nprivate Paint mBitmapPaint;\r\nContext context; private Paint circlePaint; private Path circlePath;\r\n\r\npublic DrawingView(Context c) { super(c); context\u003dc; mPath \u003d new Path(); mBitmapPaint \u003d new Paint(Paint.DITHER_FLAG); circlePaint \u003d new Paint(); circlePath \u003d new Path(); circlePaint.setAntiAlias(true); circlePaint.setColor(Color.BLUE); circlePaint.setStyle(Paint.Style.STROKE); circlePaint.setStrokeJoin(Paint.Join.MITER); circlePaint.setStrokeWidth(4f); }\r\n\r\n@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mBitmap \u003d Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); mCanvas \u003d new Canvas(mBitmap); }\r\n\r\n@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap( mBitmap, 0, 0, mBitmapPaint);\r\ncanvas.drawPath( mPath, mPaint); canvas.drawPath( circlePath, circlePaint); } private float mX, mY;\r\nprivate static final float TOUCH_TOLERANCE \u003d 4;\r\nprivate void touch_start(float x, float y) { mPath.reset(); mPath.moveTo(x, y); mX \u003d x; mY \u003d y; }\r\n\r\nprivate void touch_move(float x, float y) { float dx \u003d Math.abs(x - mX); float dy \u003d Math.abs(y - mY); if (dx \u003e\u003d TOUCH_TOLERANCE || dy \u003e\u003d TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2); mX \u003d x; mY \u003d y; circlePath.reset(); circlePath.addCircle(mX, mY, 30, Path.Direction.CW); } }\r\nprivate void touch_up() { mPath.lineTo(mX, mY); circlePath.reset();\r\nmCanvas.drawPath(mPath, mPaint);\r\nmPath.reset(); }\r\n\r\n@Override public boolean onTouchEvent(MotionEvent event) {\r\nfloat x \u003d event.getX(); float y \u003d event.getY();\r\nswitch (event.getAction()) {\r\ncase MotionEvent.ACTION_DOWN: touch_start(x, y); invalidate(); break;\r\ncase MotionEvent.ACTION_MOVE: touch_move(x, y); invalidate(); break;\r\ncase MotionEvent.ACTION_UP: touch_up(); invalidate(); break; } return true; }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "284",
    "title": "Dublicate Image",
    "about": "",
    "code": "Drawable copy \u003d imageview1.getDrawable(); imageview2.setImageDrawable(copy);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "74",
    "title": "EditText - Border",
    "about": "",
    "code": "android.graphics.drawable.ShapeDrawable shape \u003d new android.graphics.drawable.ShapeDrawable(new android.graphics.drawable.shapes.RectShape());\r\nshape.getPaint().setColor(Color.RED);\r\nshape.getPaint().setStyle(Paint.Style.STROKE);\r\nshape.getPaint().setStrokeWidth(3);\r\nedittext1.setBackground(shape);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "81",
    "title": "EditText - Cursor Position",
    "about": "",
    "code": "edittext1.setSelection(0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "80",
    "title": "EditText - Select All OnFocus",
    "about": "",
    "code": "edittext1.setSelectAllOnFocus(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "73",
    "title": "EditText Background Color",
    "about": "",
    "code": "edittext1.getBackground().setColorFilter(Color.parseColor(\"#000000\"), PorterDuff.Mode.SRC_ATOP);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "75",
    "title": "EditText Design",
    "about": "",
    "code": "final \tcom.google.android.material.textfield.TextInputLayout lay\u003dnew \tcom.google.android.material.textfield.TextInputLayout(this); \nlay.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\nlinear1.addView(lay);\nfinal com.google.android.material.textfield.TextInputLayout mytext\u003dnew com.google.android.material.textfield.TextInputLayout(MainActivity.this); \nmytext.setHint(\"Name\");\nmytext.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));lay.addView(mytext);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "72",
    "title": "EditText Dialog",
    "about": "",
    "code": "LinearLayout mylayout \u003d new LinearLayout(MainActivity.this);\r\n\r\nLinearLayout.LayoutParams params \u003d new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);\r\n\r\nmylayout.setLayoutParams(params); mylayout.setOrientation(LinearLayout.VERTICAL);\r\n\r\nfinal EditText myedittext \u003d new EditText(MainActivity.this);\r\nmyedittext.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\n \r\nmylayout.addView(myedittext);\r\ndialog.setView(mylayout);\r\nmyedittext.setHint(\"Enter your name\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "76",
    "title": "EditText Disable Suggetion (Multi Line)",
    "about": "",
    "code": "edittext1.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "77",
    "title": "EditText Disable Suggetion (Single Line)",
    "about": "",
    "code": "edittext1.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "78",
    "title": "EditText Disable/Enable KeyBoard",
    "about": "",
    "code": "//Enable\r\nedittext1.setShowSoftInputOnFocus(true);\r\n\r\n//Disable\r\nedittext1.setShowSoftInputOnFocus(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "79",
    "title": "EditText Ime Option",
    "about": "",
    "code": "edittext1.setOnEditorActionListener(new EditText.OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId \u003d\u003d android.view.inputmethod.EditorInfo.IME_ACTION_GO) { button1.performClick(); return true; } return false; } });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "463",
    "title": "EditText Lowercase",
    "about": "Java",
    "code": "edittext1.setFilters(new InputFilter[] {\n    new InputFilter.AllCaps() {\n        @Override\n        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {\n            return String.valueOf(source).toLowerCase();\n        }\n    }\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "82",
    "title": "EditText Set Error",
    "about": "",
    "code": "edittext1.setError(\"Use text Aan Gabriel\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "83",
    "title": "EditText Upercase",
    "about": "",
    "code": "edittext1.setFilters(new InputFilter[]{new InputFilter.AllCaps()});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "174",
    "title": "Enable Fullscreen for Youtube videos in WebView",
    "about": "",
    "code": "}\r\n\r\npublic class CustomWebClient extends WebChromeClient {\r\nprivate View mCustomView;\r\nprivate WebChromeClient.CustomViewCallback mCustomViewCallback;\r\nprotected FrameLayout frame;\r\n\r\n// Initially mOriginalOrientation is set to Landscape\r\nprivate int mOriginalOrientation \u003d android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;\r\nprivate int mOriginalSystemUiVisibility;\r\n\r\n// Constructor for CustomWebClient\r\npublic CustomWebClient() {}\r\n\r\npublic Bitmap getDefaultVideoPoster() {\r\nif (MainActivity.this \u003d\u003d null) {\r\nreturn null; }\r\nreturn BitmapFactory.decodeResource(MainActivity.this.getApplicationContext().getResources(), 2130837573); }\r\n\r\npublic void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback viewCallback) {\r\nif (this.mCustomView !\u003d null) {\r\nonHideCustomView();\r\nreturn; }\r\nthis.mCustomView \u003d paramView;\r\nthis.mOriginalSystemUiVisibility \u003d MainActivity.this.getWindow().getDecorView().getSystemUiVisibility();\r\n// When CustomView is shown screen orientation changes to mOriginalOrientation (Landscape).\r\nMainActivity.this.setRequestedOrientation(this.mOriginalOrientation);\r\n// After that mOriginalOrientation is set to portrait.\r\nthis.mOriginalOrientation \u003d android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;\r\nthis.mCustomViewCallback \u003d viewCallback; ((FrameLayout)MainActivity.this.getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1)); MainActivity.this.getWindow().getDecorView().setSystemUiVisibility(3846);\r\n}\r\n\r\npublic void onHideCustomView() {\r\n((FrameLayout)MainActivity.this.getWindow().getDecorView()).removeView(this.mCustomView);\r\nthis.mCustomView \u003d null;\r\nMainActivity.this.getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);\r\n// When CustomView is hidden, screen orientation is set to mOriginalOrientation (portrait).\r\nMainActivity.this.setRequestedOrientation(this.mOriginalOrientation);\r\n// After that mOriginalOrientation is set to landscape.\r\nthis.mOriginalOrientation \u003d android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; this.mCustomViewCallback.onCustomViewHidden();\r\nthis.mCustomViewCallback \u003d null;\r\n}\r\n}\r\n\r\n{",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet,Video",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "439",
    "title": "Encode and Decode Base64",
    "about": "Results is as string",
    "code": "public String encode(String txt)\n\t{\n\t\tString encoded \u003d\"\";\n\t\tfinal byte[] data;\n\n\t\ttry\n\t\t{\n\t\t\tdata \u003d txt.getBytes(\"UTF-8\");\n\t\t\tString base64 \u003dBase64.encodeToString(data, Base64.DEFAULT);\n\t\t\tencoded \u003d base64;\n\n\t\t}\n\t\tcatch (UnsupportedEncodingException e)\n\t\t{\n\t\t\tencoded \u003d \"error : \" + e.toString();\n\t\t}\n\t\treturn encoded;\n\t}\n\tpublic String decode(String txt)\n\t{\n\t\tString decoded \u003d\"\";\n\n\t\tbyte[] data \u003d Base64.decode(txt, Base64.DEFAULT);\n\t\ttry\n\t\t{\n\t\t\tdecoded \u003d new String(data, \"UTF-8\");\n\t\t}\n\t\tcatch (UnsupportedEncodingException e)\n\t\t{\n\n\t\t\tdecoded \u003d \"error : \" + e.toString();\n\t\t}\n\t\treturn decoded;\n\t}\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "296",
    "title": "Encode to Base64",
    "about": "",
    "code": "String encoded \u003d java.util.Base64.getEncoder().encodeToString(string.getBytes());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "294",
    "title": "Encode to URL Encoder",
    "about": "",
    "code": "try{encoded \u003d java.net.URLEncoder.encode(savedcodes_value, \"UTF-8\");} catch(Exception e) { }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "430",
    "title": "Execute Shell Cmd",
    "about": "-",
    "code": "try {\n java.lang.Process process \u003d Runtime.getRuntime().exec(filepath or stringWithCode);\n\njava.io.BufferedReader in \u003d new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream()));\n\nString listOfFiles \u003d \"\";\nString line;\nwhile ((line \u003d in.readLine()) !\u003d null) { listOfFiles +\u003d line;\n\njava.lang.System.out.println(line);\r// prints out command to STDout\n\n} } catch (java.io.IOException e) { e.printStackTrace();\njava.lang.System.out.println(e);\r //prints out error to STDout\n}\n\n\n//STDout REQUIRED\n\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "420",
    "title": "Exit Application",
    "about": "You can exit from your application!",
    "code": "finishAffinity();\nint pid \u003d android.os.Process.myPid();\nandroid.os.Process.killProcess(pid);\nIntent intent \u003d new Intent(Intent.ACTION_MAIN);\nintent.addCategory(Intent.CATEGORY_HOME);\nstartActivity(intent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "299",
    "title": "FAB - HIDE",
    "about": "",
    "code": "_fab.hide();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "300",
    "title": "FAB - SHOW",
    "about": "",
    "code": "_fab.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "484",
    "title": "Fab - Size",
    "about": "Change the Fab Size.",
    "code": "//Use AUTO,NORMAL,MINI to Change Size\r\n_fab.setSize(FloatingActionButton.SIZE_AUTO);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Widget,Fab",
    "source": "Toast and Friends Mind",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "4",
    "title": "FAB Color Animator",
    "about": "",
    "code": "final ObjectAnimator animator \u003d ObjectAnimator.ofInt(_fab, \"backgroundTint\", Color.rgb(0, 121, 107), Color.rgb(226, 143, 34));\r\nanimator.setDuration(2000L);\r\nanimator.setEvaluator(new ArgbEvaluator());\r\nanimator.setInterpolator(new DecelerateInterpolator(2));\r\nanimator.addUpdateListener(new ObjectAnimator.AnimatorUpdateListener() {\r\n    @Override\r\n    public void onAnimationUpdate(ValueAnimator animation) {\r\n        int animatedValue \u003d (int) animation.getAnimatedValue();\r\n        _fab.setBackgroundTintList(android.content.res.ColorStateList.valueOf(animatedValue));\r\n    }\r\n});\r\nanimator.start();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "269",
    "title": "Feedback Button",
    "about": "",
    "code": "Button button01 \u003d (Button) findViewById(R.id.rate); button01.setOnClickListener(new OnClickListener() { public void onClick(View v) { try{ Intent intent \u003d new Intent (Intent.ACTION_VIEW , Uri.parse(\"mailto:\" + \"your_acc_here@gmail.com\")); intent.putExtra(Intent.EXTRA_SUBJECT, \"AndroidDev - Basic Codes\"); intent.putExtra(Intent.EXTRA_TEXT, \"Enter your Message Here\"); startActivity(intent); }catch(ActivityNotFoundException e){ Toast.makeText(getApplicationContext(), \"Oopps No Mailer Install on your devices. \nInstall Gmail or Email Application first\", Toast.LENGTH_LONG).show(); } } });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "250",
    "title": "FFmpeg for Android",
    "about": "",
    "code": "//Add Import\r\nimport com.netcompss.ffmpeg4android.CommandValidationException;\r\nimport com.netcompss.ffmpeg4android.GeneralUtils;\r\nimport com.netcompss.ffmpeg4android.Prefs;\r\nimport com.netcompss.ffmpeg4android.ProgressCalculator;\r\nimport com.netcompss.loader.LoadJNI;\r\n\r\n\r\n//Add Variable\r\npublic ProgressDialog progressBar;\r\nString workFolder \u003d null;\r\nString demoVideoFolder \u003d null;\r\nString demoVideoPath \u003d null;\r\nString vkLogPath \u003d null;\r\nLoadJNI vk;\r\nandroid.app.NotificationManager mNotifyManager;\r\nandroid.app.Notification.Builder mBuilder;\r\nprivate static int NOTIFICATION_ID \u003d 0;\r\nprivate final int STOP_TRANSCODING_MSG \u003d -1;\r\nprivate final int FINISHED_TRANSCODING_MSG \u003d 0;\r\nprivate boolean commandValidationFailedFlag \u003d false;\r\n\t\r\n\r\n\r\n//and add\r\nprivate void runTranscodingUsingLoader() {\r\nandroid.os.PowerManager powerManager \u003d (android.os.PowerManager)MainActivity.this.getSystemService(Activity.POWER_SERVICE);\r\nandroid.os.PowerManager.WakeLock wakeLock \u003d powerManager.newWakeLock(android.os.PowerManager.PARTIAL_WAKE_LOCK, \"VK_LOCK\"); \r\nwakeLock.acquire();\r\nEditText commandText \u003d (EditText)findViewById(R.id.edittext1);\r\nString commandStr \u003d commandText.getText().toString();\r\n///////////// Set Command using code (overriding the UI EditText) /////\r\n// commandStr \u003d \"ffmpeg -y -i /sdcard/videokit/in.mp4 -strict experimental -s 320x240 -r 30 -aspect 4:3 -ab 48000 -ac 2 -ar 22050 -vcodec mpeg4 -b 2097152 /sdcard/videokit/out.mp4\";\r\n//String[] complexCommand \u003d {\"ffmpeg\", \"-y\" ,\"-i\", \"/data/data/com.examples.ffmpeg4android_demo/files/in.mp4\",\"-strict\",\"experimental\",\"-s\", \"160x120\",\"-r\",\"25\", \"-vcodec\", \"mpeg4\", \"-b\", \"150k\", \"-ab\",\"48000\", \"-ac\", \"2\", \"-ar\", \"22050\", \"/sdcard/videokit/out.mp4\"};\r\n///////////////////////////////////////////////////////////////////////\r\nvk \u003d new LoadJNI();\r\ntry {\r\n//vk.run(complexCommand, workFolder, getApplicationContext());\r\n// running without command validation\r\n//vk.run(complexCommand, workFolder, getApplicationContext(), false);\r\nvk.run(GeneralUtils.utilConvertToComplex(commandStr), workFolder, getApplicationContext());\r\n// copying vk.log (internal native log) to the videokit folder\r\nGeneralUtils.copyFileToFolder(vkLogPath, demoVideoFolder);\r\n} catch (CommandValidationException e) {\r\ncommandValidationFailedFlag \u003d true;\r\n} catch (Throwable e) {\r\n}\r\nfinally {\r\nif (wakeLock.isHeld()) {\r\nwakeLock.release();\r\n} else{\r\n}\r\n}\r\n// finished Toast\r\nString rc \u003d null;\r\nif (commandValidationFailedFlag) {\r\nrc \u003d \"Command Vaidation Failed\";\r\n} else {\r\nrc \u003d GeneralUtils.getReturnCodeFromLog(vkLogPath);\r\n}\r\nfinal String status \u003d rc;\r\nrunOnUiThread(new Runnable() {\r\npublic void run() {\r\nshowMessage(status);\r\nif (status.equals(\"Transcoding Status: Failed\")) {\r\nshowMessage(\"Check: \" + vkLogPath + \" for more information.\");\r\n}\r\n}\r\n});\r\n}\r\nprivate Handler handler \u003d new Handler() {\r\n@Override\r\npublic void handleMessage(Message msg) {\r\nif (progressBar !\u003d null) {\r\nprogressBar.dismiss();\r\n// stopping the transcoding native\r\nif (msg.what \u003d\u003d STOP_TRANSCODING_MSG) {\r\nvk.fExit(getApplicationContext());\r\n}\r\n}\r\n}\r\n};\r\npublic void runTranscoding() {\r\nprogressBar \u003d new ProgressDialog(this);\r\nprogressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);\r\nprogressBar.setTitle(\"Transcoding...\");\r\nprogressBar.setMessage(\"Press the cancel button to end the operation\");\r\nprogressBar.setMax(100);\r\nprogressBar.setProgress(0);  \r\nprogressBar.setCancelable(false);\r\nprogressBar.setButton(DialogInterface.BUTTON_NEGATIVE, \"Cancel\", new DialogInterface.OnClickListener() {\r\n@Override\r\npublic void onClick(DialogInterface dialog, int which) {\r\nhandler.sendEmptyMessage(STOP_TRANSCODING_MSG);\r\n}\r\n});\r\nprogressBar.show();\r\nprepareProgressNotification();\r\nnew Thread() {\r\npublic void run() {\r\ntry {\r\n//sleep(5000);\r\nrunTranscodingUsingLoader();\r\nhandler.sendEmptyMessage(FINISHED_TRANSCODING_MSG);\r\n} catch(Exception e) {\r\nLog.e(\"threadmessage\",e.getMessage());\r\n}\r\n}\r\n}.start();\r\n\t      \r\n// Progress update thread\r\nnew Thread() {\r\nProgressCalculator pc \u003d new ProgressCalculator(vkLogPath);\r\npublic void run() {\r\nLog.d(Prefs.TAG,\"Progress update started\");\r\nint progress \u003d -1;\r\ntry {\r\nwhile (true) {\r\nsleep(300);\r\nprogress \u003d pc.calcProgress();\r\nif (progress !\u003d 0 \u0026\u0026 progress \u003c 100) {\r\nprogressBar.setProgress(progress);\r\nmBuilder.setProgress(100, progress, false);\r\nLog.i(Prefs.TAG, \"setting progress notification: \" + progress );\r\ntry {\r\nmNotifyManager.notify(NOTIFICATION_ID, mBuilder.build());\r\n} catch (Exception e) {\r\nLog.i(Prefs.TAG, \"Android 2.3 or below? \" + e.getMessage());\r\n}\r\n}\r\nelse if (progress \u003d\u003d 100) {\r\npc.initCalcParamsForNextInter();\r\nmBuilder.setContentText(\"Transcoding complete\")\r\n// Removes the progress bar\r\n.setProgress(0,0,false);\r\ntry {\r\nmNotifyManager.notify(NOTIFICATION_ID, mBuilder.build());\r\n} catch (Exception e) {\r\nLog.i(Prefs.TAG, \"Android 2.3 or below? \" + e.getMessage());\r\n}\r\nbreak;\r\n}\r\n}\r\n\r\n} catch(Exception e) {\r\nLog.e(\"threadmessage\",e.getMessage());\r\n}\r\n}\r\n}.start();\r\n}\r\n\r\nprivate void prepareProgressNotification() {\r\nmNotifyManager \u003d (android.app.NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\r\nmBuilder \u003d new android.app.Notification.Builder(this);\r\nmBuilder.setContentTitle(\"VideoConverter\")\r\n.setContentText(\"Transcoding in progress\")\r\n.setSmallIcon(R.drawable.icon);\r\n}\r\n\r\n\r\n\r\n//Oncreate\r\ndemoVideoFolder \u003d Environment.getExternalStorageDirectory().getAbsolutePath() + \"/videokit/\";\r\ndemoVideoPath \u003d demoVideoFolder + \"in.mp4\";\r\nworkFolder \u003d getApplicationContext().getFilesDir() + \"/\";\r\nvkLogPath \u003d workFolder + \"vk.log\";\r\nGeneralUtils.copyLicenseFromAssetsToSDIfNeeded(this, workFolder);\r\nGeneralUtils.copyDemoVideoFromAssetsToSDIfNeeded(this, demoVideoFolder);\r\nint rc \u003d GeneralUtils.isLicenseValid(getApplicationContext(), workFolder);\r\n\r\n\r\n//on Button\r\nrunTranscoding();\r\n\r\n\r\n\r\n//Add To Gradle on tag defaultconfig\r\nndk {\r\n   abiFilter \"armeabi-v7a\"\r\n}\r\n\r\n//And this in dependencies\r\ncompile project(\u0027:library\u0027)\r\n\r\n\r\n//And Add Permission to manifest\r\n\u003cuses-permission android:name\u003d\"android.permission.WRITE_EXTERNAL_STORAGE\"/\u003e\r\n\u003cuses-permission android:name\u003d\"android.permission.INTERNET\"/\u003e\r\n\u003cuses-permission android:name\u003d\"android.permission.WAKE_LOCK\" /\u003e \r\n    \r\n\r\n//Library can download on my Blogs or Github.",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "251",
    "title": "FilePicker",
    "about": "",
    "code": "//Add This on Build\r\ndependencies {\r\n\tcompile \u0027com.github.angads25:filepicker:1.1.1\u0027\r\n}\r\n\r\n//Add Import file\r\nimport com.github.angads25.filepicker.model.DialogProperties;\r\nimport com.github.angads25.filepicker.model.DialogConfigs;\r\nimport com.github.angads25.filepicker.view.FilePickerDialog;\r\nimport com.github.angads25.filepicker.controller.DialogSelectionListener;\r\n\r\n//Add on File Chooser\r\nDialogProperties properties \u003d new DialogProperties();\r\nproperties.selection_mode \u003d DialogConfigs.SINGLE_MODE;\r\nproperties.selection_type \u003d DialogConfigs.FILE_SELECT;\r\nproperties.root \u003d new java.io.File(DialogConfigs.DEFAULT_DIR);\r\nproperties.error_dir \u003d new java.io.File(DialogConfigs.DEFAULT_DIR);\r\nproperties.offset \u003d new java.io.File(DialogConfigs.DEFAULT_DIR);\r\nproperties.extensions \u003d null;\r\nfinal FilePickerDialog dialog \u003d new FilePickerDialog(MainActivity.this,properties);\r\ndialog.setTitle(\"Select a File\");\r\ndialog.setDialogSelectionListener(new DialogSelectionListener() {\r\n\t@Override\r\n\tpublic void onSelectedFilePaths(String[] files) {\r\n\t//files is the array of the paths of files selected by the Application User.\r\n\t\tshowMessage(files[0]);\r\n\t}\r\n});\r\ndialog.show();\r\n\r\n//Done and test\r\n\r\n//Multi Choice: MULTI_MODE\r\n//Path Select: DIR_SELECT\r\n//Default Root: \"/sdcard\"\r\n\r\n\r\n//use extention\r\nprivate int countCommas(String fextension) {\r\n        int count \u003d 0;\r\n        for(char ch:fextension.toCharArray())\r\n        {   if(ch\u003d\u003d\u0027,\u0027) {\r\n                count++;\r\n            }\r\n        }\r\n        return count;\r\n}\r\nString fextension \u003d \"txt,pdf\";\r\nif(fextension.length()\u003e0) {\r\nint commas \u003d countCommas(fextension);\r\nString[] exts \u003d new String[commas + 1];\r\nStringBuffer buff \u003d new StringBuffer();\r\nint i \u003d 0;\r\nfor (int j \u003d 0; j \u003c fextension.length(); j++) {\r\n\tif (fextension.charAt(j) \u003d\u003d \u0027,\u0027) {\r\n\t\texts[i] \u003d buff.toString();\r\n\t\tbuff \u003d new StringBuffer();\r\n\t\ti++;\r\n\t} else {\r\n\t\tbuff.append(fextension.charAt(j));\r\n\t}\r\n}\r\nexts[i] \u003d buff.toString();\r\nproperties.extensions\u003dexts;\r\n} else {\r\n\tproperties.extensions\u003dnull;\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "354",
    "title": "FileUtil - Convert Uri To File Path",
    "about": "Create String variable uri and path.",
    "code": "path \u003d FileUtil.convertUriToFilePath(uri);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "349",
    "title": "FileUtil - Copy File",
    "about": "Create String variable path.",
    "code": "FileUtil.copyFile(path);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "348",
    "title": "FileUtil - Delete File",
    "about": "Create String variable path.",
    "code": "FileUtil.deleteFile(path);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "347",
    "title": "FileUtil - Files List",
    "about": "",
    "code": "FileUtil.listDir(path, listString);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "353",
    "title": "FileUtil - Get File Length",
    "about": "Create String variable path.",
    "code": "String legth \u003d FileUtil.getFileLength(path);\r\ntextview1.setText(legth);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "351",
    "title": "FileUtil - isDirectory",
    "about": "Create String variable path.",
    "code": "if(!isDirectory(path)) {}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "352",
    "title": "FileUtil - isFile",
    "about": "Create String variable path.",
    "code": "if(!isFile(path)) {}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "350",
    "title": "FileUtil - Move File",
    "about": "Create String variable path and movePath.",
    "code": "FileUtil.moveFile(path, movePath);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "346",
    "title": "FileUtil - Read File",
    "about": "Create String variable path.",
    "code": "FileUtil.readFile(path);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "345",
    "title": "FileUtil - Write File",
    "about": "",
    "code": "FileUtil.writeFile(FileUtil.getExternalStorageDir().concat(\"/file.txt\"), \"some value\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "375",
    "title": "Firebase - Email verification",
    "about": "Firebase email verification. Code from SketchAndro.",
    "code": "FirebaseAuth auth \u003d FirebaseAuth.getInstance();\r\ncom.google.firebase.auth.FirebaseUser user \u003d \r\nauth.getCurrentUser();\r\n\r\nuser.sendEmailVerification().addOnCompleteListener\r\n(new \r\nOnCompleteListener\u003cVoid\u003e()\r\n{ @Override\r\npublic void onComplete(Task task)\r\n{ if (task.isSuccessful()) {\r\n\r\n\r\n} else {\r\n\r\n}\r\n}});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Firebase",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "425",
    "title": "Free Memory",
    "about": "place it on any Click",
    "code": "}\npublic void freeMemory() {\n    System.runFinalization();\n    Runtime.getRuntime().gc();\n    System.gc();\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "495",
    "title": "Get all the child views of a View",
    "about": "Recursively runs through the views and adds it in an arraylist (liststring)",
    "code": "} private static ArrayList\u003cView\u003e getAllChildren(View view){\r\n\tArrayList\u003cView\u003e_v \u003d new ArrayList\u003c\u003e();\r\n\t_v.add(view);\r\n\tif(!(view instanceof ViewGroup)) return _v;\r\n\tfor(int i \u003d 0; i \u003c ((ViewGroup)view).getChildCount();i++){\r\n\t\tfinal View child \u003d ((ViewGroup)view).getChildAt(i);\r\n\t\tif (child instanceof ViewGroup) {\r\n\t\t\t_v.addAll(getAllChildren(child));\r\n\t\t}\r\n\t\telse {\r\n\t\t\t_v.add(child);\r\n\t\t}\r\n\t}\r\n\treturn _v;\r\n} ",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "Submitted by tyron",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "433",
    "title": "Get current Time",
    "about": "You can change \"HH:mm:ss\" to \"HH:mm\" if you dont want get seconds... //currentTime is the string with current time..., just make time loop every 1sec so string can be updated to textview",
    "code": "String currentTime \u003d new SimpleDateFormat(\"HH:mm:ss\", Locale.getDefault()).format(new Date());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "473",
    "title": "Get device infos",
    "about": "Getting device infos such as: android version, serial number, device model, device product..etc",
    "code": "java.lang.System.getProperty(\"os.version\"); // OS version\r\n\r\nString api_level \u003d android.os.Build.VERSION.SDK // API Level\r\nString device \u003d android.os.Build.DEVICE         // Device name\r\nString model \u003d android.os.Build.MODEL           // Model \r\nString board_name \u003d android.os.Build.BOARD      // Board name\r\nString bootloader_version \u003d android.os.Build.BOOTLOADER  // Bootloader version number\r\nString display \u003d android.os.Build.DISPLAY               // Display\r\nString manufacturer \u003d android.os.Build.MANUFACTURER     // Manufacturer\r\nString build_timestamp \u003d android.os.TIME                // The time the build was produced",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Debug",
    "source": "https://stackoverflow.com/q/12819361/9300428",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "390",
    "title": "Get device language",
    "about": "",
    "code": "/* Create variable language */\r\nlanguage \u003d Locale.getDefault().getDisplayLanguage();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Info",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "423",
    "title": "Get file size",
    "about": "This will give you the size (in Bytes) of a specific file \nNote:\n- replace string \"path\" with your string of the filepath from the specific path\n\nString:(\"file_size\") is the output string with the file size in Bytes",
    "code": "java.io.File file \u003d new java.io.File(path);\nfile_size \u003d String.valueOf(file.length());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "381",
    "title": "Get Image From Audio File",
    "about": "Add add source directly and paste this code",
    "code": "MediaMetadataRetriever retriever \u003d new MediaMetadataRetriever(); \nretriever.setDataSource(songPath); \nbyte[] art \u003d retriever.getEmbeddedPicture(); \nif( art !\u003d null ){ \nBitmap bitmap \u003d BitmapFactory.decodeByteArray(art,0,art.length); \nandroidx.core.graphics.drawable.RoundedBitmapDrawable rbd \u003d androidx.core.graphics.drawable.RoundedBitmapDrawableFactory.create(getResources(), bitmap); \nrbd.setCircular(true); \nimageview1.setImageDrawable(rbd); \n} else { \nimageview1.setImageResource(R.drawable.default_image); \n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Audio",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "89",
    "title": "Get Image From File",
    "about": "",
    "code": "//onCreate\n\n}\n\nprivate static final String STATE_IMAGE_URI \u003d \"STATE_IMAGE_URI\";\n\nprivate Uri imageUri;\n\npublic void onSaveInstanceState(Bundle state) {\n\nsuper.onSaveInstanceState(state);\nif (imageUri !\u003d null ) {\nstate.putParcelable(STATE_IMAGE_URI, imageUri);\n}\n\n}\n\npublic void onRestoreInstanceState(Bundle state) {\nsuper.onRestoreInstanceState(state);\nif(state \u003d\u003d null || !state.containsKey(STATE_IMAGE_URI)) return;\n\nsetImage((Uri) state.getParcelable(STATE_IMAGE_URI));\n\n}\n\nprivate static final int IMAGE_REQUEST_CODE \u003d 9;\n\nprivate void chooseImage() {\n\nIntent intent \u003d new Intent();\nintent.setType(\"image/*\");\nintent.setAction(Intent.ACTION_GET_CONTENT);\nstartActivityForResult(Intent.createChooser(intent, \"Select picture\"), IMAGE_REQUEST_CODE);\n\n\n}\n\npublic void onActivityResult(int requestCode, int resultCode, Intent data) {\n\nsuper.onActivityResult(requestCode, resultCode, data);\nif (requestCode !\u003d IMAGE_REQUEST_CODE) {\nreturn;\n}\n\nif (resultCode !\u003d Activity.RESULT_OK) {\nreturn;\n}\n\nsetImage(data.getData());\n\n}\n\nprivate void setImage(Uri uri) {\nimageUri \u003d uri;\nimageview1.setImageURI(uri);\n}\n\n\n\nprivate void nothing() {\n\n\n\n//image choose\nchooseImage();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "452",
    "title": "Get Query Parameter From URL",
    "about": "Get Query Parameter From URL Correctly",
    "code": "Uri data \u003d Uri.parse(\"neonteam.net/index.php?key\u003dtest\").getData();\nString key \u003d data.getQueryParameter(\"key\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "454",
    "title": "Get Specific Line From Text",
    "about": "Get Specific Line From Text Using Split ",
    "code": "String s\u003d \"first line\nsecond line\nthird line\";\r\nString[] lines \u003d s.split(\"\n\");\r\nString specific_line \u003d lines[0];\n// will return first line",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "343",
    "title": "GIF TO IMAGEVIEW",
    "about": "Tutorial: we start gif in the sketch ...\r\nWe put ImageView in activation and set it as visibility to GONE and let\u0027s say we call it img1 ... then we put ImageView in which we will run the animation ... and call it for example img2 ... set the brick imageview load image from url ... put img1 and there any link with the image ... now we have imported the Glide library ... with it and we will start the animation ...",
    "code": "Glide.with(context).load(url).into(new GlideDrawableImageViewTarget(img2));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "478",
    "title": "Glide - Animation and thumbnail from url",
    "about": "This code will show thumbnail until an image is not loaded from url, upon loaded, it will do animation.\r\nDon\u0027t forget to use the native set image from url block before this code",
    "code": "Glide.with(getApplicationContext())\r\n.load(Uri.parse(\"http://sketchub.in/images/about-logo.png\"))\r\n.thumbnail(Glide.with(getApplicationContext()).load(R.drawable.ic_unknown))\r\n.animate(android.R.anim.slide_in_left)\r\n.into(imageview1);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Widget",
    "source": "https://developer.android.com/reference/android/R.anim",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "428",
    "title": "Glide - Placeholder \u0026 Error drawables",
    "about": "Glide with error drawable and placeholder drawable",
    "code": "// mContext - your context\n// R.drawable.PLACEHOLDER_IMAGE_NAME - replace on your image\n// R.drawable.ERROR_IMAGE_NAME - replace on your image\nGlide.with(mContext)\n.load(imgUrl)\n.placeholder(R.drawable.PLACEHOLDER_IMAGE_NAME)\n.error(R.drawable.ERROR_IMAGE_NAME)\n.into(imageView);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "355",
    "title": "Glide - Set Image From Url",
    "about": "",
    "code": "Glide.with(mContext) .load(imageUrl) .animate(R.anim.abc_fade_in) .signature(new StringSignature(String.valueOf(System.currentTimeMillis()))) .centerCrop() .into(mImageView_photo) ;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "491",
    "title": "Google Map - Draw a circle",
    "about": "",
    "code": "/* Add this code to OnMapReady */\r\n\r\ncom.google.android.gms.maps.model.Circle circle \u003d _googleMap.addCircle(new com.google.android.gms.maps.model.CircleOptions()\r\n  .center(new com.google.android.gms.maps.model.LatLng(0, 0))\r\n  .radius(1000)\r\n  .strokeColor(Color.RED)\r\n  .fillColor(Color.RED));\r\n  \r\n  //or there is other method that dont work on Sketchware\r\n  /* Add this imports */\r\nimport com.google.android.gms.maps.model.Circle;\r\nimport com.google.android.gms.maps.model.CircleOptions;\r\nimport com.google.android.gms.maps.model.LatLng;\r\n\r\n/* Add this code to OnMapReady */\r\nCircle circle \u003d _googleMap.addCircle(new CircleOptions()\r\n  .center(new LatLng(0, 0))\r\n  .radius(1000)\r\n  .strokeColor(Color.RED)\r\n  .fillColor(Color.RED));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "Submitted by TheClashFruit",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "84",
    "title": "Gradient + Edge Rounding + Stroke",
    "about": "\"Gradient + Edge Edge + Stroke\"\r\nP.S:\r\n1 - stroke color\r\n2 - stroke thickness\r\n3 - (expandable list) gradient colors",
    "code": "final float[] rd \u003d new float[8];\r\nrd[0] \u003d (float)_tlrdx;\r\nrd[1] \u003d (float)_tlrdy;\r\nrd[2] \u003d (float)_trrdx;\r\nrd[3] \u003d (float)_trrdy;\r\nrd[4] \u003d (float)_brrdx;\r\nrd[5] \u003d (float)_brrdy;\r\nrd[6] \u003d (float)_blrdx;\r\nrd[7] \u003d (float)_blrdy;\r\nint[] colors \u003d new int[_clr.size()-2];\r\nfor(int i \u003d 0; i \u003c _clr.size()-2; i++) {\r\ncolors[i] \u003d Color.parseColor(_clr.get(i+2));\r\n}\r\nfinal android.graphics.drawable.GradientDrawable _btn_bg\u003d new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.TOP_BOTTOM, colors); _btn_bg.setCornerRadii(rd); _view.setBackgroundDrawable(_btn_bg);\r\nif(_outline) {\r\nnew Handler().postDelayed(new Runnable() {\r\n@Override public void run() {\r\nBitmap scaledBitmap \u003d Bitmap.createBitmap(_view.getWidth(), _view.getHeight(), Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(scaledBitmap);\r\ncanvas.setBitmap(scaledBitmap);\r\n_btn_bg.draw(canvas);\r\nPaint paint \u003d new Paint();\r\npaint.setColor(Color.parseColor(_clr.get(0)));\r\npaint.setStyle(Paint.Style.STROKE);\r\nint strokeWidth \u003d Integer.parseInt(_clr.get(1));\r\npaint.setStrokeWidth(strokeWidth);\r\nRect rect \u003d new Rect();\r\n_view.getLocalVisibleRect(rect);\r\nPath path \u003d new Path();\r\npath.addRoundRect(new RectF(rect.left + strokeWidth, rect.top + strokeWidth, rect.right - strokeWidth, rect.bottom - strokeWidth), rd, Path.Direction.CW);\r\ncanvas.drawPath(path, paint);\r\ncanvas.drawBitmap(scaledBitmap,0,0,null);\r\nandroid.graphics.drawable.BitmapDrawable background \u003d new android.graphics.drawable.BitmapDrawable(scaledBitmap);\r\n_view.setBackground(background);\r\n}\r\n}, 100);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "5",
    "title": "Gradient Color",
    "about": "about in comment...",
    "code": "//Gradient Code Starts Here\r\nint[] colors \u003d {Color.rgb(138,41,81),Color.rgb(41,53,158)};\r\nandroid.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.BR_TL, colors);\r\ngd.setCornerRadius(0f); \r\ngd.setStroke(0,Color.WHITE);\r\nif(android.os.Build.VERSION.SDK_INT \u003e\u003d 16) {linear1.setBackground(gd); } else {linear1.setBackgroundDrawable(gd);}\r\n//End of Gradient Generator",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "222",
    "title": "Hardware - 32-bit Support",
    "about": "",
    "code": "TextView.setText(Build.SUPPORTED_32_BIT_ABIS.toString());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "223",
    "title": "Hardware - 64-bit Support",
    "about": "",
    "code": "TextView.setText(Build.SUPPORTED_64_BIT_ABIS.toString());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "226",
    "title": "Hardware - ID",
    "about": "",
    "code": "TextView.setText(Build.ID);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "225",
    "title": "Hardware - Name of Product",
    "about": "",
    "code": "TextView.setText(Build.PRODUCT);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "224",
    "title": "Hardware - Serial Number",
    "about": "",
    "code": "TextView.setText(Build.SERIAL);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "458",
    "title": "Hiding the bottom buttons",
    "about": "Caution, may not work with Android X libraries",
    "code": "getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "266",
    "title": "HighLight TextView",
    "about": "",
    "code": "//First Make MoreBlock with textview as view\r\n//Add TextView with name regex1 - regex10 set to zero width and height and add regex compile to text\r\n\r\n\r\n//Config Color:\r\nfinal String secondaryColor \u003d \"#5c6bc0\";\r\nfinal String primaryColor \u003d \"#42a5f5\";\r\nfinal String numbersColor \u003d \"#26a69a\";\r\nfinal String quotesColor \u003d \"#ff1744\";\r\nfinal String commentsColor \u003d \"#9e9e9e\";\r\n\r\n//Text Highlight.\r\n_view.addTextChangedListener(new TextWatcher() {\r\nColorScheme keywords1 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex1.getText().toString().concat(regex2.getText().toString())), Color.parseColor(secondaryColor));\r\nColorScheme keywords2 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex3.getText().toString().concat(regex4.getText().toString().concat(regex5.getText().toString()))), Color.parseColor(primaryColor));\r\nColorScheme keywords3 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex6.getText().toString()), Color.parseColor(numbersColor));\r\nColorScheme keywords4 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex7.getText().toString()), Color.parseColor(secondaryColor));\r\nColorScheme keywords5 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex9.getText().toString()), Color.parseColor(quotesColor));\r\nColorScheme keywords6 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex10.getText().toString()), Color.parseColor(commentsColor));\r\nColorScheme keywords7 \u003d new ColorScheme(java.util.regex.Pattern.compile(regex8.getText().toString()), Color.parseColor(numbersColor));\r\nfinal ColorScheme[] schemes \u003d {keywords1, keywords2, keywords3, keywords4, keywords5, keywords6, keywords7};\r\n@Override\r\npublic void beforeTextChanged(CharSequence s, int start, int count, int after) {\r\n}\r\n@Override\r\npublic void onTextChanged(CharSequence s, int start, int before, int count) {\r\n}\r\n@Override\r\npublic void afterTextChanged(Editable s) {\r\nremoveSpans(s, android.text.style.ForegroundColorSpan.class);\r\nfor(ColorScheme scheme : schemes) {\r\nfor(java.util.regex.Matcher m \u003d scheme.pattern.matcher(s);\r\nm.find();) {\r\nif (scheme \u003d\u003d keywords4) {\r\ns.setSpan(new android.text.style.ForegroundColorSpan(scheme.color), m.start(), m.end()-1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);\r\n} else {\r\ns.setSpan(new android.text.style.ForegroundColorSpan(scheme.color), m.start(), m.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);\r\n}\r\n}\r\n}\r\n}\r\nvoid removeSpans(Editable e, Class\u003c? extends android.text.style.CharacterStyle\u003e type) {\r\nandroid.text.style.CharacterStyle[] spans \u003d e.getSpans(0, e.length(), type);\r\nfor (android.text.style.CharacterStyle span : spans) {\r\ne.removeSpan(span);\r\n}\r\n}\r\nclass ColorScheme {\r\nfinal java.util.regex.Pattern pattern;\r\nfinal int color;\r\nColorScheme(java.util.regex.Pattern pattern, int color) {\r\nthis.pattern \u003d pattern;\r\nthis.color \u003d color;\r\n}\r\n}\r\n});\r\n\r\n\r\n//For REGEX Example:\r\nregex1 \u003d b(out|print|println|valueOf|toString|concat|equals|for|while|switch|getText\r\nregex2 \u003d |println|printf|print|out|parseInt|round|sqrt|charAt|compareTo|compareToIgnoreCase|concat|contains|contentEquals|equals|length|toLowerCase|trim|toUpperCase|toString|valueOf|substring|startsWith|split|replace|replaceAll|lastIndexOf|size)b\r\nregex3 \u003d b(public|private|protected|void|switch|case|class|import|package|extends|Activity|TextView|EditText|LinearLayout|CharSequence|String|int|onCreate|ArrayList|float|if|else|static|Intent|Button|SharedPreferences\r\nregex4 \u003d |abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|interface|long|native|new|package|private|protected|\r\nregex5 \u003d public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while|true|false|null)b\r\nregex6 \u003d b([0-9]+)b\r\nregex7 \u003d (w+)(()+\r\nregex8 \u003d @s*(w+)\r\nregex9 \u003d \"(.*?)\"|\u0027(.*?)\u0027\r\nregex10 \u003d /*(?:.|[\r\nnr])*?*/|//.*\r\n\r\n//Note: add to TextView String.",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "267",
    "title": "HTML Tags",
    "about": "",
    "code": "\u003ch1\u003e ǎꎭ? ȎᎭ䎭펭㎭ \u003c/h1\u003e\r\n\r\n\u003ch6\u003e ֎ ȎᎭ䎭펭㎭ \u003c/h6\u003e\r\n\r\n\u003c\u003e ЎᎭ?Ꭽ䎭?Ꭽ \u003c/p\u003e\r\n\r\n\u003cb\u003e ǎꎭ? ӎ掭쎭?\u003c/b\u003e\r\n\r\n\u003ci\u003e ΎᎭ쎭펭 ӎ掭쎭? \u003c/i\u003e\r\n\r\n\u003ccite\u003e ׎ꎭ?ꎭ?㎭Ꭽ? \u003c/cite\u003e\r\n\r\n\u003cem\u003eHighlight word\u003c/em\u003e\r\n\r\n\u003cfont size\u003d?\u003e Text Size (1 - 7) \u003c/font\u003e\r\n\r\n\u003cfont color\u003d?\u003e Text color (HEX) \u003c/font\u003e\r\n\r\n\u003ca href\u003d\"mailto:gmail@.com\"\u003e\r\n Ў?㎭Ꭽ 䎭ꎭ?掭???펭쎭 \u003c/a\u003e\r\n\r\n\u003cp align\u003d?\u003e ?㎭ꎭ? ?Ꭽ?Ꭽ䎭?Ꭽ (left, right, justify ꎭ펭 center)\r\n\r\n\u003cblockquote\u003e ώ????  ⎭掭ꎭ ??? ?掭쎭?? \u003c/blockquote\u003e\r\n\r\n\u003cbr\u003e Ў掭?掭㎭ ???쎭",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "90",
    "title": "Image Base64",
    "about": "",
    "code": "//on onCreate\r\n\r\n}\r\nprivate static final String STATE_IMAGE_URI \u003d \"STATE_IMAGE_URI\";\r\nprivate Uri imageUri;\r\npublic void onSaveInstanceState(Bundle state) {\r\nsuper.onSaveInstanceState(state);\r\nif (imageUri !\u003d null ) {\r\nstate.putParcelable(STATE_IMAGE_URI, imageUri);\r\n}\r\n}\r\npublic void onRestoreInstanceState(Bundle state) {\r\nsuper.onRestoreInstanceState(state);\r\nif(state \u003d\u003d null || !state.containsKey(STATE_IMAGE_URI)) return;\r\nsetImage((Uri)state.getParcelable(STATE_IMAGE_URI));\r\n}\r\nprivate static final int IMAGE_REQUEST_CODE \u003d 9;\r\nprivate void chooseImage() {\r\nIntent intent \u003d new Intent();\r\nintent.setType(\"image/*\"); \r\nintent.setAction(Intent.ACTION_GET_CONTENT); \r\nstartActivityForResult(Intent.createChooser(intent, \"Select picture\"), IMAGE_REQUEST_CODE);\r\n}\r\npublic void onActivityResult(int requestCode, int resultCode, Intent data) {\r\nsuper.onActivityResult(requestCode, resultCode, data);\r\nif (requestCode !\u003d IMAGE_REQUEST_CODE) {\r\nreturn;\r\n}\r\nif (resultCode !\u003d Activity.RESULT_OK) {\r\nreturn;\r\n}\r\nsetImage(data.getData());\r\n}\r\nprivate void setImage(Uri uri) {\r\nimageUri \u003d uri;\r\nimageview1.setImageURI(uri);\r\ni \u003d 1; //key on list\r\n}\r\nprivate void nothing() {\r\n\r\n\r\n//ImageView\r\nchooseImage();\r\n\r\n//On Button To image base64\r\n\r\nimageview1.buildDrawingCache();\r\nBitmap bitmap \u003d imageview1.getDrawingCache(); java.io.ByteArrayOutputStream stream\u003dnew java.io.ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);\r\nbyte[] imageByteArray\u003dstream.toByteArray();\r\nString img_str \u003d Base64.encodeToString(imageByteArray, 0);\r\n\r\n\r\n\r\n//Base64 To Image\r\nbyte[] decodedString \u003d Base64.decode(BASE64STRINGVARIABLE, Base64.DEFAULT); Bitmap decodedByte \u003d BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);\r\nimageview1.setImageBitmap(decodedByte);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "459",
    "title": "Image Button",
    "about": "Image Button",
    "code": "final ImageButton imageButton \u003d new ImageButton(MainActivity.this);\nimageButton.setImageResource(R.drawable.icon);\n// change R.drawable.icon to your own icon\nimageButton.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\nlinear1.addView(imageButton);\n// change linear1 with your own linear view\nimageButton.setOnClickListener(new View.OnClickListener() {\n@Override\npublic void onClick(View view) {\nshowMessage(\"Clicked!\");\n// change this action with your own code\n}\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "91",
    "title": "Image Chooser As BG",
    "about": "",
    "code": "// onCreate\r\n\r\n} private static int RESULT_LOAD_IMAGE \u003d 1;\r\n@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode \u003d\u003d RESULT_LOAD_IMAGE \u0026\u0026 resultCode \u003d\u003d RESULT_OK \u0026\u0026 null !\u003d data) { Uri selectedImage \u003d data.getData();\r\ntry {\r\njava.io.InputStream is \u003d getContentResolver().openInputStream(selectedImage);\r\nandroid.graphics.drawable.Drawable bg_img \u003d android.graphics.drawable.Drawable.createFromStream(is, selectedImage.toString());\r\nimageview1.setBackground(bg_img); }\r\ncatch (java.io.FileNotFoundException e) {\r\nshowMessage(e.toString());\r\n} }\r\n\r\n\r\n//imageview1 onClick\r\n\r\nIntent i \u003d new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);\r\nstartActivityForResult(i, RESULT_LOAD_IMAGE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "92",
    "title": "Image Crop",
    "about": "",
    "code": "private void performCrop(Uri picUri) {\r\n try {\r\n Intent cropIntent \u003d new Intent(\"com.android.camera.action.CROP\");\r\n // indicate image type and Uri\r\n cropIntent.setDataAndType(picUri, \"image/*\");\r\n // set crop properties here\r\n cropIntent.putExtra(\"crop\", true);\r\n // indicate aspect of desired crop\r\n cropIntent.putExtra(\"aspectX\", 1);\r\n cropIntent.putExtra(\"aspectY\", 1);\r\n // indicate output X and Y\r\n cropIntent.putExtra(\"outputX\", 128);\r\n cropIntent.putExtra(\"outputY\", 128);\r\n // retrieve data on return\r\n cropIntent.putExtra(\"return-data\", true);\r\n // start the activity - we handle returning in onActivityResult\r\n startActivityForResult(cropIntent, PIC_CROP);\r\n }\r\n // respond to users whose devices do not support the crop action\r\n catch (ActivityNotFoundException anfe) {\r\n // display an error message\r\n String errorMessage \u003d \"Whoops - your device doesn\u0027t support the crop action!\";\r\n Toast toast \u003d Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);\r\n toast.show();\r\n }\r\n}\r\n\r\nfinal int PIC_CROP \u003d 1;\r\n@Override\r\nprotected void onActivityResult(int requestCode, int resultCode, Intent data) {\r\n super.onActivityResult(requestCode, resultCode, data);\r\n\r\n if (requestCode \u003d\u003d PIC_CROP) {\r\n if (data !\u003d null) {\r\n // get the returned data\r\n Bundle extras \u003d data.getExtras();\r\n // get the cropped bitmap\r\n Bitmap selectedBitmap \u003d extras.getParcelable(\"data\");\r\n\r\n imageview1.setImageBitmap(selectedBitmap);\r\n }\r\n }\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "93",
    "title": "Image Drawable",
    "about": "",
    "code": "imageview1.setBackround(Drawables.getSelectableDrawableFor(Color.parseColor(\"1E88E5\")));\r\nimageview1.setClickable(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "94",
    "title": "Image Set Rounded",
    "about": "",
    "code": "Bitmap bm \u003d ((android.graphics.drawable.BitmapDrawable)imageview1.getDrawable()).getBitmap();\r\n\r\nimageview1.setImageBitmap(getRoundedCornerBitmap(bm, 360));\r\n\r\n// onCreate\r\n}\r\npublic static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {\r\nBitmap output \u003d Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(output);\r\nfinal int color \u003d 0xff424242;\r\nfinal Paint paint \u003d new Paint();\r\nfinal Rect rect \u003d new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());\r\nfinal RectF rectF \u003d new RectF(rect);\r\nfinal float roundPx \u003d pixels;\r\npaint.setAntiAlias(true);\r\ncanvas.drawARGB(0, 0, 0, 0);\r\npaint.setColor(color);\r\ncanvas.drawRoundRect(rectF, roundPx, roundPx, paint); \r\npaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); \r\ncanvas.drawBitmap(bitmap, rect, rect, paint);\r\nreturn output;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "95",
    "title": "Image SetDraw",
    "about": "",
    "code": "imageview1.getDrawable(). setColorFilter(Color.parseColor(\"#1e88e5\"), PorterDuff.Mode.SRC_IN);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "96",
    "title": "Image Zoom In",
    "about": "",
    "code": "float x\u003dpreview.getScaleX(), y\u003dpreview.getScaleY(),yenix\u003dx+1,yeniy\u003dy+1; preview.setScaleX(yenix);preview.setScaleY(yeniy);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "97",
    "title": "Image Zoom Out",
    "about": "",
    "code": "float x\u003dpreview.getScaleX(), y\u003dpreview.getScaleY(),yenix\u003dx-1,yeniy\u003dy-1; preview.setScaleX(yenix);preview.setScaleY(yeniy);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "499",
    "title": "ImageView - Preloader",
    "about": "It will load specific image before loading main image. Set an empty imageviewSetImageFromUrl block before using it.\r\n",
    "code": "Glide.with(getApplicationContext()).load(Uri.parse(url)).placeholder(R.drawable.your_image_icon).into(imageview1);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "Submitted by Pratham",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "500",
    "title": "ImageView - set App Icon",
    "about": " Basically it obtains the icon that has been established as the official of the application, that is, the one that will be shown in the launchers and then it will put it in an Imageview so we can save uploading the icon again.",
    "code": "imageview1.setImageResource(R.drawable.app_icon);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "Submitted by Toastcode DEV",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "287",
    "title": "ImageView - Set Image From Url",
    "about": "Create String \"url\" and paste image url. Replace id imageview1 on your widget",
    "code": "Glide.with(getApplicationContext()).load(Uri.parse(url)).into(imageview1);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "279",
    "title": "IME Action Listener",
    "about": "",
    "code": "edittext1.setOnEditorActionListener(new EditText.OnEditorActionListener() {\r\n    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {\r\n        if (actionId \u003d\u003d android.view.inputmethod.EditorInfo.IME_ACTION_GO) {\r\n            button1.performClick();\r\n            return true;\r\n        }\r\n    return false;\r\n    }\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "258",
    "title": "In - app Billing",
    "about": "",
    "code": "public class MainActivity extends AppCompatActivity implements BillingProcessor.IBillingHandler\r\n{\r\n\r\n\t@Override\r\n\tpublic void onProductPurchased(String p1, TransactionDetails p2)\r\n\t{\r\n\t\t// \r\n\t}\r\n\r\n\t@Override\r\n\tpublic void onPurchaseHistoryRestored()\r\n\t{\r\n\t\t\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void onBillingError(int p1, Throwable p2)\r\n\t{\r\n\t\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void onBillingInitialized()\r\n\t{\r\n\t\t// ֎)\r\n\t}\r\n\r\n\r\n\r\nbp \u003d new BillingProcessor(this, null, this);\r\nbp.initialize();\r\n\r\nbp.loadOwnedPurchasesFromGoogle();\r\n\r\n\r\n\r\n@Override\r\n\tprotected void onActivityResult(int requestCode, int resultCode, Intent data)\r\n\t{\r\n\t\t// TODO: Implement this method\r\n\t\tif(!bp.handleActivityResult(requestCode, resultCode, data))\r\n\t\tsuper.onActivityResult(requestCode, resultCode, data);\r\n\t}\r\n@Override\r\n\tprotected void onDestroy()\r\n\t{\r\n\t\t// TODO: Implement this method\r\n\t\tif(bp !\u003dnull)\r\n\t\t\tbp.release();\r\n\t\tsuper.onDestroy();\r\n\t}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nbp.purchase(Main2Activity.this, \"android.test.purchased\");\r\n\r\nbp.subscribe(Main2Activity.this, \"android.test.purchased\");\r\n\r\nbp.consumePurchase(\"android.test.purchased\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "228",
    "title": "Intent - Close App",
    "about": "",
    "code": "finishAffinity();\r\nint pid \u003d android.os.Process.myPid();\r\nandroid.os.Process.killProcess(pid); \r\nIntent intent \u003d new Intent(Intent.ACTION_MAIN);\r\nintent.addCategory(Intent.CATEGORY_HOME);\r\nstartActivity(intent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "229",
    "title": "Intent - Go Another Activity",
    "about": "",
    "code": "//go_to_new - Ɏ 펭掭掭? ꎭ?掭, MainActivity - ӎ掭쎭掭 Ꭽ쎭?ꎭ㎭ꎭ?, SecondActivity - Ύ㎭ Ꭽ쎭?ꎭ㎭ꎭ?\r\n\r\nIntent go_to_new \u003d new Intent(MainActivity.this, SecondActivity.class); startActivity(go_to_new);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "227",
    "title": "Intent - Multiple App Activity",
    "about": "",
    "code": "Intent multiple \u003d new Intent();\r\n\r\nmultiple.setClassName(\"com.dimas.colorcode\", \"com.dimas.colorcode.MainActivity\"); // com.dimas.colorcode - Ɏ ?Ꭽ쎭掭?. MainActivity - Ɏ \u000e쎭?ꎭ㎭??\r\n\r\nstartActivity(multiple);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "230",
    "title": "Intent - Open App",
    "about": "",
    "code": "Intent launch \u003d getPackageManager().getLaunchIntentForPackage(\"com.my.project\"); \r\n\r\nif (launch !\u003d null) { startActivity(launchIntent); }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "471",
    "title": "Intent - Open App Info In Settings",
    "about": "Don\u0027t forget to replace your activity with \"MainActivity\" in the code.",
    "code": "//By ToastcodeDev\r\n\r\nIntent intent \u003d new Intent();\r\nintent.setAction(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);\r\nUri uri \u003d Uri.fromParts(\"package\", MainActivity.this.getPackageName(), null);\r\nintent.setData(uri);\r\nMainActivity.this.startActivity(intent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "382",
    "title": "Intent - Open dowloads",
    "about": "Add add source directly and paste this code",
    "code": "startActivity(new android.content.Intent(android.app.DownloadManager.ACTION_VIEW_DOWNLOADS));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "466",
    "title": "Intent - Open NFC settings",
    "about": "By ezzex (check author), works on API 16 or high.",
    "code": "//by ezzex (check author)\n//works on API 16 or high\nIntent open_nfc \u003d new Intent(android.provider.Settings.ACTION_NFC_SETTINGS);\nstartActivity(open_nfc);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "467",
    "title": "Intent - Open PRIVACY settings",
    "about": "//by ezzex (check author), works on API 5 or high.",
    "code": "//by ezzex (check author)\n//works on API 5 or high\nIntent open_privacy \u003d new Intent(android.provider.Settings.ACTION_PRIVACY_SETTINGS);\nstartActivity(open_privacy);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "468",
    "title": "Intent - Open settings",
    "about": "By ezzex (check author), works on API 1 or high.",
    "code": "//by ezzex (check author)\n//works on API 1 or high\nIntent open_settings \u003d new Intent(android.provider.Settings.ACTION_SETTINGS);\nstartActivity(open_settings);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "469",
    "title": "Intent - Open WIFI IP settings",
    "about": "By ezzex (check author), works on API 3 or high.",
    "code": "//by ezzex (check author)\n//works on API 3 or high\nIntent open_wifiip \u003d new Intent(android.provider.Settings.ACTION_WIFI_IP_SETTINGS\n);\nstartActivity(open_wifiip);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "486",
    "title": "Intent - Send Email",
    "about": "Sends email to a specific email , for example iamnoon@nethical.in along with subject and body",
    "code": "String to \u003d \"youremail@gmail.com\"; String\r\n//Your email id here\r\n subject\u003d \"Your Subject\"; \r\n//your subject here\r\nString body\u003d\"Your Body\"; \r\n//your body here\r\nString mailTo \u003d \"mailto:\" + to + \"?\u0026subject\u003d\" + Uri.encode(subject) + \"\u0026body\u003d\" + Uri.encode(body); Intent emailIntent \u003d new Intent(Intent.ACTION_VIEW); emailIntent.setData(Uri.parse(mailTo)); startActivity(emailIntent);\r\n\r\n//create 4 string variables : to , subject , body , mailTo",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Intent",
    "source": "Submitted by Nethical",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "419",
    "title": "Intent - Send sms",
    "about": "Send to sms app with sms body",
    "code": "//Code Requested By Sketch Andro User\n\n//Code Modify/Present By Developer Partha\n\n//Create Two String Variable :- Number \u0026 Msg\n\nUri uri \u003d Uri.parse(\"smsto:\"+Number);\nIntent dp \u003d new Intent(Intent.ACTION_SENDTO, uri);\ndp.putExtra(\"sms_body\", Msg);\nstartActivity(dp);\n\n//In Number Your or User Can Put Phone Number To Whom They Want Send SMS\n\n//In Msg They Can Write There Message",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "411",
    "title": "Intent - Uninstall Apps",
    "about": "Intent - Uninstall Apps",
    "code": "\n Uri packageURI \u003d Uri.parse(\"package:\".concat(\"com.package.name\")); Intent uninstallIntent \u003d new Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent);\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "236",
    "title": "JCircle To SimpleLine",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJCircleToSimpleLineController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "231",
    "title": "JJArround Circle",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJAroundCircleBornTailController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "235",
    "title": "JJBar To Line",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJCircleToLineAlphaController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "232",
    "title": "JJBar with Error Icon",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJBarWithErrorIconController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "233",
    "title": "JJChange Arrow",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJChangeArrowController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "234",
    "title": "JJCircle To Bar",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJCircleToBarController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "237",
    "title": "JJDot Go Path",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJDotGoPathController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "238",
    "title": "JJScale Circle",
    "about": "",
    "code": "final JJSearchView txt \u003d new JJSearchView(MainActivity.this);\r\ntxt.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(txt);\r\ntxt.setController(new JJScaleCircleAndTailController());\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.startAnim();\r\n}\r\n});\r\n\r\n\r\nbutton2.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\ntxt.resetAnim();\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "244",
    "title": "Kill Process",
    "about": "",
    "code": "finishAffinity();\r\nint pid \u003d android.os.Process.myPid();\r\nandroid.os.Process.killProcess(pid); \r\nIntent intent \u003d new Intent(Intent.ACTION_MAIN);\r\nintent.addCategory(Intent.CATEGORY_HOME);\r\nstartActivity(intent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "101",
    "title": "Layout Fit To Device",
    "about": "",
    "code": "Display display \u003d getWindowManager().getDefaultDisplay();\r\nPoint size \u003d new Point();\r\ntry {\r\ndisplay.getRealSize(size);\r\n} catch (NoSuchMethodError err) {\r\ndisplay.getSize(size);\r\n}\r\nint width \u003d size.x;\r\nint height \u003d size.y;\r\nLinearLayout.LayoutParams lp \u003d new LinearLayout.LayoutParams((int)(width), LinearLayout.LayoutParams.MATCH_PARENT);\r\nlayout1.setLayoutParams(lp);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "102",
    "title": "Layout Gradient",
    "about": "",
    "code": "android.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.TOP_BOTTOM, new int[]{\r\n0xFF616261, //Top Color\r\n0xFF131313 //Bottom Color\r\n});\r\ngd.setCornerRadius(0f);\r\nlinear1.setBackgroundDrawable(gd);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "103",
    "title": "Layout Programatically",
    "about": "",
    "code": "LinearLayout.setPadding(16, 16, 10, 10);\r\n\r\nLinearLayout.setMargin(8, 4, 6, 8);\r\n\r\nLinearLayout.setAlpha(0.5d);\r\n\r\nLinearLayout.setElevation(10f);\r\n\r\nLinearLayout.setGravity(Gravity.CENTER);\r\n\r\nLinearLayout.setOrientation(VERTICAL);\r\n\r\nLinearLayout1.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\r\n\r\nLinearLayout2.setLayoutParams(new ViewGroup.LayoutParams(60, 60));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "104",
    "title": "Layout Set Height",
    "about": "",
    "code": "LinearLayout layout \u003d findViewById(R.id.linear1);\r\nLayoutParams params \u003d layout.getLayoutParams();\r\nparams.height \u003d 100;\r\nparams.width \u003d 100;\r\nlayout.setLayoutParams(params);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "98",
    "title": "Layout to Image",
    "about": "",
    "code": "//onCreate\r\n}\r\nprivate void storeImage(Bitmap image) { java.io.File pictureFile \u003d new java.io.File(getExternalCacheDir() + \"/image.jpg\");\r\nif (pictureFile \u003d\u003d null) { Log.d(\"MainActivity\", \"Error creating media file, check storage permissions: \");\r\nreturn; } try {\r\njava.io.FileOutputStream fos \u003d new java.io.FileOutputStream(pictureFile); image.compress(Bitmap.CompressFormat.PNG, 90, fos);\r\nfos.close(); } catch (java.io.FileNotFoundException e) { Log.d(\"MainActivity\", \"File not found: \" + e.getMessage()); } catch (java.io.IOException e) { Log.d(\"MainActivity\", \"Error accessing file: \" + e.getMessage());\r\n}\r\n\r\nIntent iten \u003d new Intent(android.content.Intent.ACTION_SEND);\r\niten.setType(\"*/*\");\r\niten.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new java.io.File(getExternalCacheDir() + \"/image.jpg\")));\r\nstartActivity(Intent.createChooser(iten, \"Ў掭펭ꎭ??/??Ꭽꎭ?\"));\r\n}\r\n\r\nprivate Bitmap getBitmapFromView(View view) { Bitmap returnedBitmap \u003d Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(returnedBitmap);\r\nandroid.graphics.drawable.Drawable bgDrawable \u003dview.getBackground();\r\nif (bgDrawable!\u003dnull) { bgDrawable.draw(canvas); } else{ canvas.drawColor(Color.WHITE); }\r\nview.draw(canvas);\r\nreturn returnedBitmap;\r\n\r\n\r\n//button onClick\r\n\r\nstoreImage(getBitmapFromView(linear2));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "386",
    "title": "Light Status bar style (Change status bar icons to dark)",
    "about": "Do not remove if and try. Light StatusBar only 23+ api",
    "code": "try {\r\nif(Build.VERSION.SDK_INT \u003e\u003d 21) {\r\nlinear1.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);\r\n       }\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "453",
    "title": "Linear - Elevation",
    "about": "This code adds a shadow under the linear to make a flying effect.",
    "code": "yourlinear.setElevation(15f);\n\n//To make the effect it looks better recommended to put in 9 or 10f",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "415",
    "title": "Linear dynamic width",
    "about": "Set your width, and change it programmaticaly.",
    "code": "LinearLayout.LayoutParams LP \u003d new LinearLayout.LayoutParams((int)width, LinearLayout.LayoutParams.WRAP_CONTENT);\nlinear.setLayoutParams(LP);\n//by orexot",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "100",
    "title": "Linear Swipe",
    "about": "",
    "code": "//Create Linear1\r\n//Add Linear2 to Linear1\r\n\r\n//OnCreate\r\nlinear2.setOnTouchListener(new View.OnTouchListener() {\r\n@Override\r\npublic boolean onTouch(View p1, MotionEvent p2) {\r\nswitch(p2.getAction()) {\r\ncase MotionEvent.ACTION_DOWN:\r\nf \u003d p2.getY();\r\nbreak;\r\ncase MotionEvent.ACTION_UP:\r\nt \u003d p2.getY();\r\nif (((f - t) \u003c -250)) {\r\n_slideDown();\r\n}\r\nif (((t - f) \u003c -250)) {\r\n_slideUp();\r\n}\r\nbreak;\r\n}\r\nreturn true;\r\n}});\r\n\r\n//_slideDown\r\nObjectAnimator animX \u003d ObjectAnimator.ofFloat(linear2, \"x\", 300f);\r\nObjectAnimator animY \u003d ObjectAnimator.ofFloat(linear2, \"y\", 700f);\r\nAnimatorSet animSetXY \u003d new AnimatorSet();\r\nanimSetXY.playTogether(animX, animY);\r\nanimSetXY.start();\r\n\r\n\r\n//_slideUp\r\nObjectAnimator animX \u003d ObjectAnimator.ofFloat(linear2, \"x\", 0f);\r\nObjectAnimator animY \u003d ObjectAnimator.ofFloat(linear2, \"y\", 0f);\r\nAnimatorSet animSetXY \u003d new AnimatorSet();\r\nanimSetXY.playTogether(animX, animY);\r\nanimSetXY.start();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "289",
    "title": "LinearLayout - Object Move",
    "about": "",
    "code": "// Ď⎭Ꭽ㎭펭掭  쎭?Ꭽ 펭⎭ LinearLayout, ㎭?? ?Ꭽ??펭䎭Ꭽ掭 ImageView  ꎭ掭掭 \"img\"\r\n\r\n// ˎ 펭 onCreate\r\n\r\nimg.setOnTouchListener(new OnTouchListener() { PointF DownPT \u003d new PointF();\r\nPointF StartPT \u003d new PointF();\r\n@Override public boolean onTouch(View v, MotionEvent event) { int eid \u003d event.getAction(); switch (eid) {\r\ncase MotionEvent.ACTION_MOVE : PointF mv \u003d new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);\r\nimg.setX((int)(StartPT.x+mv.x)); img.setY((int)(StartPT.y+mv.y));\r\nStartPT \u003d new PointF( img.getX(), img.getY() ); break;\r\ncase MotionEvent.ACTION_DOWN : DownPT.x \u003d event.getX();\r\nDownPT.y \u003d event.getY();\r\nStartPT \u003d new PointF( img.getX(), img.getY() ); break;\r\ncase MotionEvent.ACTION_UP : break; default : break;} return true;} });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "288",
    "title": "LinearLayout - Save in .jpg",
    "about": "",
    "code": "// 1) Ď⎭Ꭽ㎭펭掭  쎭?Ꭽ linear2, button1\r\n\r\n// 2) Ď⎭Ꭽ㎭펭掭 쎭:\r\n\r\n//onCreate\r\n}\r\nprivate void storeImage(Bitmap image) { java.io.File pictureFile \u003d new java.io.File(getExternalCacheDir() + \"/image.jpg\");\r\nif (pictureFile \u003d\u003d null) { Log.d(\"MainActivity\", \"Error creating media file, check storage permissions: \");\r\nreturn; } try {\r\njava.io.FileOutputStream fos \u003d new java.io.FileOutputStream(pictureFile); image.compress(Bitmap.CompressFormat.PNG, 90, fos);\r\nfos.close(); } catch (java.io.FileNotFoundException e) { Log.d(\"MainActivity\", \"File not found: \" + e.getMessage()); } catch (java.io.IOException e) { Log.d(\"MainActivity\", \"Error accessing file: \" + e.getMessage());\r\n}\r\n\r\nIntent iten \u003d new Intent(android.content.Intent.ACTION_SEND);\r\niten.setType(\"*/*\");\r\niten.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new java.io.File(getExternalCacheDir() + \"/image.jpg\")));\r\nstartActivity(Intent.createChooser(iten, \"Ў掭펭ꎭ??/??Ꭽꎭ?\"));\r\n}\r\n\r\nprivate Bitmap getBitmapFromView(View view) { Bitmap returnedBitmap \u003d Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(returnedBitmap);\r\nandroid.graphics.drawable.Drawable bgDrawable \u003dview.getBackground();\r\nif (bgDrawable!\u003dnull) { bgDrawable.draw(canvas); } else{ canvas.drawColor(Color.WHITE); }\r\nview.draw(canvas);\r\nreturn returnedBitmap;\r\n\r\n\r\n//button onClick\r\n\r\nstoreImage(getBitmapFromView(linear2));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "302",
    "title": "LinearLayout - save in PDF",
    "about": "",
    "code": "// Добавляем на экран linear1 и linear2, размещаем в них что то типа текста, изображений, или чего то там еще...\r\n\r\n// Код для onClick (ImageView/Button)\r\n\r\ntry {\r\n\r\nandroid.graphics.pdf.PdfDocument document \u003d new android.graphics.pdf.PdfDocument();\r\n\r\nandroid.graphics.pdf.PdfDocument.PageInfo pageInfo \u003d new android.graphics.pdf.PdfDocument.PageInfo.Builder(1080, 1920, 2).create();\r\n\r\nandroid.graphics.pdf.PdfDocument.Page page1 \u003d document.startPage(pageInfo);\r\n\r\nView content1 \u003d linear1;\r\n\r\ncontent1.draw(page1.getCanvas());\r\n\r\ndocument.finishPage(page1);\r\n\r\nandroid.graphics.pdf.PdfDocument.Page page2 \u003d document.startPage(pageInfo);\r\n\r\nView content2 \u003d linear2;\r\n\r\ncontent2.draw(page2.getCanvas());\r\n\r\ndocument.finishPage(page2);\r\n\r\njava.io.File myFile \u003d new java.io.File(getExternalCacheDir() + \"/newpdf.pdf\");\r\n\r\nmyFile.createNewFile();\r\n\r\njava.io.FileOutputStream fOut \u003d new java.io.FileOutputStream(myFile);\r\n\r\ndocument.writeTo(fOut);\r\n\r\nfOut.close();\r\n\r\ndocument.close();\r\n\r\nIntent emailIntent \u003d new Intent(android.content.Intent.ACTION_SEND);\r\n\r\nemailIntent.setType(\"*/*\");\r\n\r\nemailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new java.io.File(getExternalCacheDir() +\"/newpdf.pdf\")));\r\n\r\nstartActivity(Intent.createChooser(emailIntent, \"Сохранить/Отправить PDF\"));\r\n\r\nToast.makeText(getBaseContext(), \"Преобразовано в PDF\", Toast.LENGTH_SHORT).show();\r\n\r\n}\r\n\r\ncatch (Exception e) {\r\n\r\nToast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();\r\n\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "278",
    "title": "Linkify",
    "about": "",
    "code": "textview1.setClickable(true);\r\nandroid.text.util.Linkify.addLinks(textview1, android.text.util.Linkify.ALL);\r\ntextview1.setLinkTextColor(Color.parseColor(\"#009688\"));\r\ntextview1.setLinksClickable(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "456",
    "title": "List Map from Json",
    "about": "List Map from Json String Value",
    "code": "ArrayList\u003cHashMap\u003cString, Object\u003e\u003e array \u003d new Gson().fromJson((String)jsonValue, new TypeToken\u003cArrayList\u003cHashMap\u003cString,Object\u003e\u003e()\n  {}.getType());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "455",
    "title": "List String from Json",
    "about": "List String from Json String Value",
    "code": "ArrayList\u003cString\u003e array \u003d new Gson().fromJson((String)jsonValue, new TypeToken\u003cArrayList\u003cString\u003e\u003e() {}.getType());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "477",
    "title": "Listmap Programatically",
    "about": "The code has instructions inside. Make sure to use in end of a moreblock or onCreate",
    "code": "ListView listview1 \u003d new ListView(this);\r\nLinearLayout.LayoutParams lp1 \u003d new LinearLayout.LayoutParams(\r\nLinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);\r\nlistview1.setLayoutParams(lp1);\r\nlinear1.addViee(listview1);\r\n//if in drawer menu\r\n//_drawer_linear1.addView(listview1);\r\n\r\n//if List String Programatically\r\nlist.add(\"toast\");\r\nlistview1.setAdapter(new ArrayAdapter\u003cString\u003e(getBaseContext(), android.R.layout.simple_list_item_1, list));\r\n\r\n//if List Map\r\n{\r\nHashMap\u003cString, Object\u003e _item \u003d new HashMap\u003c\u003e();\r\n_item.put(\"key\", \"Item 1\");\r\nlist.add(_item);\r\n}\r\nlistview1.setAdapter(new Listview1Adapter(list));\r\n//But you must Have Custom adapter\r\n\r\n//Click\r\nlistview1.setOnItemClickListener( new AdapterView.OnItemClickListener() {\r\n@Override\r\npublic void onItemClick(AdapterView _parent, View _view, final int _position, long _id) {\r\nswitch (_position){\r\ncase 0:\r\nshowMessage(\"item 0\");\r\nbreak;\r\ncase 1:\r\nshowMessage(\"item 1\");\r\nbreak;\r\n}\r\n}});\r\n\r\n//Long Click\r\nlistview1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {\r\n@Override\r\npublic boolean onItemLongClick(AdapterView\u003c?\u003e _param1, View _param2, int _param3, long _param4) {\r\nfinal int _position \u003d _param3;\r\nswitch (_position){\r\ncase 0:\r\nshowMessage(\"item 0\");\r\nbreak;\r\ncase 1:\r\nshowMessage(\"item 1\");\r\nbreak;\r\n}\r\nreturn true;\r\n}\r\n});\r\n\r\n\r\n\r\n//Custom Adapter For List Map\r\npublic class Listview1Adapter extends BaseAdapter {\r\nArrayList\u003cHashMap\u003cString, Object\u003e\u003e _data;\r\npublic Listview1Adapter(ArrayList\u003cHashMap\u003cString, Object\u003e\u003e _arr) {\r\n_data \u003d _arr;\r\n}\r\n\r\n@Override\r\npublic int getCount() {\r\nreturn _data.size();\r\n}\r\n\t\t\r\n@Override\r\npublic HashMap\u003cString, Object\u003e getItem(int _index) {\r\nreturn _data.get(_index);\r\n}\r\n\t\t\r\n@Override\r\npublic long getItemId(int _index) {\r\nreturn _index;\r\n}\r\n@Override\r\npublic View getView(final int _position, View _view, ViewGroup _viewGroup) {\r\nLayoutInflater _inflater \u003d (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r\nView _v \u003d _view;\r\nif (_v \u003d\u003d null) {\r\n_v \u003d _inflater.inflate(R.layout.aaa, null);\r\n}\r\n\t\t\t\r\nfinal LinearLayout linear1 \u003d (LinearLayout) _v.findViewById(R.id.linear1);\r\nfinal ImageView imageview1 \u003d (ImageView) _v.findViewById(R.id.imageview1);\r\nfinal TextView textview1 \u003d (TextView) _v.findViewById(R.id.textview1);\r\ntextview1.setText(\"aan\");\r\nreturn _v;\r\n}\r\n}\r\n\r\n\r\n//Use this For List Map (100% Programatically)\r\nprivate ArrayList\u003cHashMap\u003cString, Object\u003e\u003e list \u003d new ArrayList\u003c\u003e();\r\n\r\n//Use this For List String (100% Programatically)\r\nprivate ArrayList\u003cString\u003e list \u003d new ArrayList\u003c\u003e();\r\n\r\n//Code By Gabriel Gymkhana \u0026 ToastcodeBoi",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Widget",
    "source": "Gabriel Gymkhana and Toastcode",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "270",
    "title": "ListView - Change CustomView",
    "about": "",
    "code": "_v \u003d _inflater.inflate(R.layout.yourview, null);\r\n\r\n//yourview is your customview. Insert code in onBindCustomView event.",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "389",
    "title": "ListView - Clear Text Filter",
    "about": "",
    "code": "listview1.clearTextFilter();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "253",
    "title": "ListView - Get Text from Position",
    "about": "Add this code in onClick...",
    "code": "String req \u003d listview1.getItemAtPosition(_position).toString();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "388",
    "title": "ListView - Search",
    "about": "",
    "code": "((ArrayAdapter)listview1.getAdapter()).getFilter().filter(edittext1.getText().toString());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "271",
    "title": "ListView - Set Animation Selected",
    "about": "",
    "code": "android.graphics.drawable.ColorDrawable[] color \u003d {\r\nnew android.graphics.drawable.ColorDrawable(Color.parseColor(\"#b6c75c\")), new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#FF0000\"))\r\n};\r\nandroid.graphics.drawable.TransitionDrawable trans \u003d new android.graphics.drawable.TransitionDrawable(color);\r\n_param2.setBackground(trans);\r\ntrans.startTransition(2000); // duration 2 seconds\r\n\r\n// Go back to the default background color of Item\r\nandroid.graphics.drawable.ColorDrawable[] color2 \u003d {\r\nnew android.graphics.drawable.ColorDrawable(Color.parseColor(\"#FF0000\")), new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#FFFFFF\"))\r\n};\r\nandroid.graphics.drawable.TransitionDrawable trans2 \u003d new android.graphics.drawable.TransitionDrawable(color2);\r\n_param2.setBackground(trans2);\r\n                trans2.startTransition(2000); // duration 2 seconds",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "272",
    "title": "ListView - Set Divider",
    "about": "",
    "code": "listview1.setDivider(null); \r\nlistview1.setDividerHeight(0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "274",
    "title": "ListView - Set Footer",
    "about": "",
    "code": "LayoutInflater inflater \u003d getLayoutInflater();\r\nViewGroup footer \u003d (ViewGroup)inflater.inflate(R.layout.footer,listview1,false);\r\nlistview1.addFooterView(footer,null,false);\r\n\r\n\r\n//Add Before\r\n//listview1.setAdapter(arrayAdapter);\r\n//Set On ListView Custome",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "273",
    "title": "ListView - Set Header",
    "about": "",
    "code": "LayoutInflater inflater \u003d getLayoutInflater();\r\nViewGroup header \u003d (ViewGroup)inflater.inflate(R.layout.head,listview1,false);\r\nlistview1.addHeaderView(header);\r\n\r\n//Add Before\r\n//listview1.setAdapter(arrayAdapter);\r\n//Set On ListView Custome",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "441",
    "title": "Listview - Stack From Bottom",
    "about": "Normally Listview Orientation Page is above, but if you use this code it will move to the bottom of the page",
    "code": "listview1.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);\nlistview1.setStackFromBottom(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "277",
    "title": "ListView - Swipe Refresh",
    "about": "",
    "code": "final androidx.swiperefreshlayout.widget sl \u003d new androidx.swiperefreshlayout.widget(MainActivity.this);\nsl.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.MATCH_PARENT));\nlinear1.addView(sl);\nlinear1.removeView(listview1);\nsl.addView(listview1);\nsl.setOnRefreshListener( new androidx.swiperefreshlayout.widget.OnRefreshListener() { @Override public void onRefresh() { _refresh(); } } );\n// Make moreblock refresh for onRefresh action",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "416",
    "title": "Listview scroll speed",
    "about": "Set listview scroll speed",
    "code": "\n//by Orexot\n\nlistview.setFriction(2f);\n\n//instead «2f» set yor value. Ex. «1,5f»",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "422",
    "title": "ListView Text Color",
    "about": "Add this code to on create",
    "code": "final ArrayAdapter\u003cString\u003e arrayAdapter \u003d new ArrayAdapter\u003cString\u003e (this, android.R.layout.simple_list_item_1, yourlistname){ @Override public View getView(int position, View convertView, ViewGroup parent){ View view \u003d super.getView(position, convertView, parent);TextView tv \u003d (TextView) view.findViewById(android.R.id.text1); tv.setTextColor(Color.WHITE); return view; } }; listview1.setAdapter(arrayAdapter)",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "421",
    "title": "Listview Transcript Bottom",
    "about": "transcript bottom listview",
    "code": "listview1.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); listview1.setStackFromBottom(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "265",
    "title": "Long Click",
    "about": "",
    "code": "button1.setOnLongClickListener(new View.OnLongClickListener() {@Override public boolean onLongClick(View v) { _MoreBlock(); return true;} } );",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "161",
    "title": "MatchTextView",
    "about": "",
    "code": "//To use\r\nfinal MatchTextView mMatchTextView \u003d new MatchTextView(MainActivity.this); \r\nmMatchTextView.setText(\"Your Text\"); \r\nmMatchTextView.setTextColor(0xFF000000); \r\nmMatchTextView.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(mMatchTextView);\r\nmMatchTextView.setProgress((float)100);\r\n// use view.hide(); to hidden\r\n//Button MatchButton",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "435",
    "title": "Material Bottom Sheet",
    "about": "Material Bottom Sheet",
    "code": "com.google.android.material.bottomsheet.BottomSheetDialog bottomSheetDialog \u003d new com.google.android.material.bottomsheet.BottomSheetDialog(MainActivity.this); View bottomSheetView; bottomSheetView \u003d getLayoutInflater().inflate(R.layout.mybsd, null ); bottomSheetDialog.setContentView(bottomSheetView); bottomSheetDialog.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "378",
    "title": "Material EditText",
    "about": "Add add source directly and paste this code. Code from Codebrary",
    "code": "/* implement:\nenable AppCompat\nlinear1, textview1 */\n\n// onCreate()\n\n// Create Text Input Layout - Tlay\n\nfinal com.google.android.material.textfield.TextInputLayout Tlay\u003dnew com.google.android.material.textfield.TextInputLayout(MainActivity.this);\n\n// Tlay set Layout Params\n\nTlay.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\n\nlinear1.addView(Tlay);\n\n// Create EditText1\n\nfinal com.google.android.material.textfield.TextInputEditText EditText1\u003dnew com.google.android.material.textfield.TextInputEditText(MainActivity.this);\n\nEditText1.setHint(\"Material EditText\");\n\n// EditText1 set Layout Params\n\nEditText1.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\n\nTlay.addView(EditText1);\n\n// EditText1 Text Changed Listener\n\nEditText1.addTextChangedListener(new TextWatcher() {\n\n@Override public void afterTextChanged(Editable s) {}\n\n@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }\n\n@Override public void onTextChanged(CharSequence s, int start, int before, int count) {\n\n//** Your code\n\nif(s.length() \u003d\u003d 0) {\ntextview1.setText(\"Material EditText\");\n} else {\ntextview1.setText(s);\n}\n\n}\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "434",
    "title": "Material Snackbar",
    "about": "Updated Snackbar",
    "code": "View contextView \u003d findViewById(R.id.linear1);\n\ncom.google.android.material.snackbar.Snackbar.make(contextView, \"Message Deleted\", com.google.android.material.snackbar.Snackbar.LENGTH_LONG)\n    .setAction(\"Undo\", new OnClickListener() {\n      @Override\n      public void onClick(View v) {\n        // Respond to the click, such as by undoing the modification that caused\n        // this message to be displayed\n      })\n    });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "397",
    "title": "MaterialEditText",
    "about": "MaterialEditText(only for appcompat)",
    "code": "/* implement:\nenable AppCompat\nlinear1, textview1 */\n\n// onCreate()\n\n// Create Text Input Layout - Tlay\n\nfinal com.google.android.material.textfield.TextInputLayout Tlay\u003dnew com.google.android.material.textfield.TextInputLayout(MainActivity.this);\n\n// Tlay set Layout Params\n\nTlay.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\n\nlinear1.addView(Tlay);\n\n// Create EditText1\n\nfinal com.google.android.material.textfield.TextInputEditText EditText1\u003dnew com.google.android.material.textfield.TextInputEditText(MainActivity.this);\n\nEditText1.setHint(\"Material EditText\");\n\n// EditText1 set Layout Params\n\nEditText1.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\n\nTlay.addView(EditText1);\n\n// EditText1 Text Changed Listener\n\nEditText1.addTextChangedListener(new TextWatcher() {\n\n@Override public void afterTextChanged(Editable s) {}\n\n@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }\n\n@Override public void onTextChanged(CharSequence s, int start, int before, int count) {\n\n//** Your code\n\nif(s.length() \u003d\u003d 0) {\ntextview1.setText(\"Material EditText\");\n} else {\ntextview1.setText(s);\n}\n\n}\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "475",
    "title": "MediaPlayer - setOnCompletion",
    "about": "Use this code when the MediaPlayer finishes playing.",
    "code": "yourmediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {\r\n@Override\r\npublic void onCompletion(MediaPlayer mp) {\r\n// do your work here\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Audio",
    "source": "https://developers.android.com",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "476",
    "title": "MediaPlayer - setOnError",
    "about": "Use this code when the MediaPlayer fails to load",
    "code": " yourmediaplayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {\r\n@Override\r\npublic boolean onError(MediaPlayer mp, int what, int extra) {\r\n// do your work here\r\nreturn true;\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Audio",
    "source": "https://developer.android.com/",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "404",
    "title": "Menu in toolbar",
    "about": "Toolbar menu",
    "code": "}\n@Override\npublic boolean onCreateOptionsMenu (Menu menu){\nmenu.add(0, 0, 0, \"Item 1\");\nmenu.add(0, 1, 1, \"Item 2\");\nmenu.add(0, 2, 2, \"Item 3\");\nreturn true;\n}\n\n@Override\npublic boolean onOptionsItemSelected(MenuItem item){\nswitch (item.getItemId()){\ncase 0:\nshowMessage(\"Item 1 Clicked\");//codes when item1 clicked\nbreak;\ncase 1:\nshowMessage(\"Item 2 Clicked\");//codes when item2 clicked\nbreak;\ncase 2:\nshowMessage(\"Item 3 Clicked\");//codes when item3 clicked\nbreak;\n\n}\nreturn super.onOptionsItemSelected(item);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "160",
    "title": "Minimalize Apps",
    "about": "",
    "code": "public void minimizeApp() {\r\n    Intent startMain \u003d new Intent(Intent.ACTION_MAIN);\r\n    startMain.addCategory(Intent.CATEGORY_HOME);\r\n    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r\n    startActivity(startMain);\r\n}\r\n\r\n//Created By Me",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "403",
    "title": "Moreblocks - Add Moreblock To Sketchware",
    "about": "Add moreblock",
    "code": "public boolean add(String block) {\n        if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) \u003d\u003d PackageManager.PERMISSION_DENIED\n                || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) \u003d\u003d PackageManager.PERMISSION_DENIED) {\n            ActivityCompat.requestPermissions(getActivity(), new String[] {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);\n            return false;\n        }\n        String blockss \u003d FileUtil.readFile(FileUtil.getExternalStorageDir().concat(\"/.sketchware/collection/more_block/list\"));\n        FileUtil.writeFile(FileUtil.getExternalStorageDir().concat(\"/.sketchware/collection/more_block/list\"), blockss + \"\n\" + block);\n        return true;\n}\n//or\n// Alternative\n    public boolean add(HashMap\u003cString, Object\u003e moreblock) {\n        if (moreblock.containsKey(\"data\") \u0026\u0026 moreblock.containsKey(\"name\") \u0026\u0026 moreblock.containsKey(\"reserved1\")) {\n            LinkedHashMap\u003cString, Object\u003e linkedHashMap \u003d new LinkedHashMap\u003c\u003e();\n            if (moreblock.get(\"data\") instanceof HashMap) {\n                linkedHashMap.put(\"data\", new Gson().toJson(moreblock.get(\"data\")));\n                linkedHashMap.put(\"reserved1\", moreblock.get(\"reserved1\"));\n                linkedHashMap.put(\"name\", moreblock.get(\"name\"));\n                FileUtil.writeFile(moreblockspath, FileUtil.readFile(moreblockspath).concat(\"\n\").concat(new Gson().toJson(linkedHashMap)));\n                return true;\n            } else if (moreblock.get(\"data\") instanceof String) {\n                linkedHashMap.put(\"data\", moreblock.get(\"data\"));\n                linkedHashMap.put(\"reserved1\", moreblock.get(\"reserved1\"));\n                linkedHashMap.put(\"name\", moreblock.get(\"name\"));\n                FileUtil.writeFile(moreblockspath, FileUtil.readFile(moreblockspath).concat(\"\n\").concat(new Gson().toJson(linkedHashMap)));\n                return true;\n            } else {\n                // must be String or HashMap\n                return false;\n            }\n        } else return false;\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "402",
    "title": "Moreblocks - Moreblocks to ListMap",
    "about": "Moreblocks - List Moreblocks to ListMap",
    "code": "public ArrayList\u003cHashMap\u003cString, Object\u003e\u003e getList() {\r\n        ArrayList\u003cHashMap\u003cString, Object\u003e\u003e arrayList \u003d new ArrayList\u003c\u003e();\r\n        String[] moreblocks \u003d FileUtil.readFile(MoreblocksManager.moreblockspath).split(\\{\"data\"\");\r\n\r\n        for (String moreblock : moreblocks) {\r\n            if (moreblock.startsWith(\":\")) {\r\n                try {\r\n                    moreblock \u003d \"{\"data\"\".concat(moreblock);\r\n                    HashMap\u003cString, Object\u003e hashMap \u003d JsonManager.toHashMap(moreblock);\r\n                    arrayList.add(hashMap);\r\n                } catch (Exception e) {\r\n                    System.out.println(\"Error with moreblock: \".concat(e));\r\n                }\r\n            }\r\n        }\r\n        return arrayList;\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "159",
    "title": "Motion Detect",
    "about": "",
    "code": "linear1.setOnTouchListener(new View.OnTouchListener() {\r\n@Override\r\npublic boolean onTouch(View p1, MotionEvent p2){\r\nswitch(p2.getAction()) {\r\ncase MotionEvent.ACTION_DOWN: \r\ny1 \u003d p2.getY();\r\nx1 \u003d p2.getX();\r\nbreak;\r\ncase MotionEvent.ACTION_UP: \r\ny2 \u003d p2.getY();\r\nx2 \u003d p2.getX();\r\nif (((y1 - y2) \u003c -250)) {\r\nshowMessage(\"Down\");\r\n} \r\nif (((y2 - y1) \u003c -250)) {\r\nshowMessage(\"Up\");\r\n}\r\nif (((x1 - x2) \u003c -250)) {\r\nshowMessage(\"Right\");\r\n} \r\nif (((x2 - x1) \u003c -250)) {\r\nshowMessage(\"Left\");\r\n}\r\nbreak;\r\n}\r\nreturn true;\r\n}});\r\n\r\n//Create Number Variable y1, y2, x1, x2",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "86",
    "title": "Motion view inside set edges",
    "about": "P.S:\r\npadding (Variable: Number) - movement limit indent from edges\r\nview (View: View) - the widget itself that needs to be moved\r\ni (Variable: Number) - an obligatory global variable that you need to create before using the morblock, otherwise your application will simply not be able to compile\r\nUsing:\r\nPut the morblock in any place (best of all onCreate), set the indent value and widget.",
    "code": "_view.setOnLongClickListener(new OnLongClickListener() {\r\n@Override\r\npublic boolean onLongClick(View v) {\r\ni \u003d 1;\r\nreturn true;\r\n}\r\n});\r\n_view.setOnTouchListener(new OnTouchListener() {\r\nPointF DownPT \u003d new PointF();\r\nPointF StartPT \u003d new PointF();\r\n@Override\r\npublic boolean onTouch(View v, MotionEvent event) {\r\nif(i \u003d\u003d 1) {\r\nint eid \u003d event.getAction();\r\nswitch (eid) {\r\ncase MotionEvent.ACTION_MOVE:PointF mv \u003d new PointF(event.getX() - DownPT.x, event.getY() - DownPT.y);\r\nRect rect \u003d new Rect();\r\n((View)_view.getParent()).getLocalVisibleRect(rect);\r\nif((StartPT.x+mv.x\u003e\u003drect.left+_padding)\u0026\u0026(StartPT.x+mv.x\u003c\u003drect.right-(_padding+_view.getWidth()))) {\r\n_view.setX((int)(StartPT.x+mv.x));\r\n}\r\nif((StartPT.y+mv.y\u003e\u003drect.top+_padding)\u0026\u0026(StartPT.y+mv.y\u003c\u003drect.bottom-(_padding+_view.getHeight()))) {\r\n_view.setY((int)(StartPT.y+mv.y));\r\n}\r\nStartPT \u003d new PointF(_view.getX(), _view.getY());\r\nbreak;\r\ncase MotionEvent.ACTION_DOWN : DownPT.x \u003d event.getX();\r\nDownPT.y \u003d event.getY();\r\nStartPT \u003d new PointF(_view.getX(), _view.getY());\r\nbreak;\r\ncase MotionEvent.ACTION_UP :\r\ni \u003d 0;\r\nbreak;\r\ndefault : break;\r\n}\r\n}\r\nreturn false;\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "276",
    "title": "Move to Back Task",
    "about": "",
    "code": "//Used to run your app in background like you click the home button\r\nmoveTaskToBack(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "158",
    "title": "Mp3 Streaming (MP3 From url)",
    "about": "",
    "code": "String url \u003d \"https://tektite.streamguys1.com:5025/klcc.mp3\";\r\n\r\nm \u003d new MediaPlayer();\r\n\r\nm.setAudioStreamType(3);\r\n\r\ntry {\r\nm.setDataSource(url);\r\n\r\n}catch (IllegalArgumentException e) {\r\n\r\nToast.makeText(getApplicationContext(), \"You might not set the URI correctly!\", 1).show();\r\n\r\n} catch (SecurityException e2) { \r\n\r\nToast.makeText(getApplicationContext(), \"You might not set the URI, correctly!\", 1).show(); }\r\n\r\ncatch (IllegalStateException e3) { \r\n\r\nToast.makeText(getApplicationContext(), \"You might not set the URI, correctly!\", 1).show(); }\r\n\r\ncatch (java.io.IOException e4)\r\n{\r\ne4.printStackTrace();\r\n}\r\n\r\n\r\ntry\r\n{\r\nm.prepare();\r\n}\r\ncatch (IllegalStateException e5)\r\n{\r\nToast.makeText(getApplicationContext(), \"You might not set the URI correctly!\", 1).show();\r\n}\r\ncatch (java.io.IOException e6)\r\n{ \r\nToast.makeText(getApplicationContext(), \"You might not set the URI correctly!\", 1).show();\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Audio",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "162",
    "title": "Navigation Drawable Icon",
    "about": "",
    "code": "final androidx.drawerlayout.widget.DrawerLayout drawer \u003d new androidx.drawerlayout.widget.DrawerLayout(this);\nfinal androidx.drawerlayout.widget.DrawerLayout drawer1 \u003d new androidx.drawerlayout.widget.DrawerLayout(this);\n\n//main.xml is MainActivity\nLinearLayout innerView \u003d (LinearLayout) LayoutInflater.from(this).inflate(R.layout.main, null);\n\n//create xml file with name \"menu\"\nLinearLayout slideView \u003d (LinearLayout) LayoutInflater.from(this).inflate(R.layout.menu, null);\n\nandroidx.drawerlayout.widget.LayoutParams lp1 \u003d new androidx.drawerlayout.widget.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT , LinearLayout.LayoutParams.MATCH_PARENT);\n\nandroidx.drawerlayout.widget.DrawerLayout.LayoutParams lp \u003d new androidx.drawerlayout.widget.DrawerLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT , LinearLayout.LayoutParams.MATCH_PARENT);\n\nandroid.widget.FrameLayout.LayoutParams fl \u003d new android.widget.FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);\n\nlp1.gravity \u003d (Gravity.RIGHT);\nlp.gravity \u003d (Gravity.LEFT);\ninnerView.setLayoutParams(fl);\nslideView.setLayoutParams(lp);\ndrawer1.addView(innerView);\ndrawer.addView(drawer1);\ndrawer.addDrawerListener(new androidx.drawerlayout.widget.DrawerLayout.DrawerLayout.DrawerListener() {\n@Override\npublic void onDrawerSlide(View drawerView, float slideOffset) {\n}\n@Override\npublic void onDrawerOpened(View drawerView) {\ngetActionBar().setHomeAsUpIndicator(R.drawable.ic_back_white);\n}\n@Override\npublic void onDrawerClosed(View drawerView) {\ngetActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_white);\n}\n@Override\npublic void onDrawerStateChanged(int newState) {\n}\n});\n\n//on menu.xml add linear1\nLinearLayout lnn1 \u003d (LinearLayout) slideView.findViewById(R.id.linear1);\n//on menu.xml add linear2\nLinearLayout lnn2 \u003d (LinearLayout) slideView.findViewById(R.id.linear2);\n//on menu.xml add linear3\nLinearLayout lnn3 \u003d (LinearLayout) slideView.findViewById(R.id.linear3);\n\nlnn1.setOnClickListener(new View.OnClickListener() {\n@Override\npublic void onClick(View _v) {\ndrawer.closeDrawer(Gravity.LEFT);\n}\n});\n\nlnn2.setOnClickListener(new View.OnClickListener() {\n@Override\npublic void onClick(View _v) {\nshowMessage(\"item 2 Clicked\");\n}\n});\n\nlnn3.setOnClickListener(new View.OnClickListener() {\n@Override\npublic void onClick(View _v) {\nshowMessage(\"item 3 Clicked\");\n}\n});\n\ndrawer.addView(slideView);\nsetContentView(drawer);\ninitialize();\n\n//im found button1 on main.xml to open draw\nbutton1.setOnClickListener(new View.OnClickListener() {\n@Override\npublic void onClick(View _v) {\ndrawer.openDrawer(Gravity.LEFT);\n}\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "164",
    "title": "Navigation Dual Drawable",
    "about": "",
    "code": "androidx.drawerlayout.widget.DrawerLayout drawer \u003d new androidx.drawerlayout.widget.DrawerLayout(this);\nandroidx.drawerlayout.widget.DrawerLayout drawer1 \u003d new androidx.drawerlayout.widget.DrawerLayout(this);\nLinearLayout slideView1 \u003d (LinearLayout) LayoutInflater.from(this).inflate(R.layout.right_drawer, null);\nLinearLayout innerView \u003d (LinearLayout) LayoutInflater.from(this).inflate(R.layout.main, null);\nLinearLayout slideView \u003d (LinearLayout) LayoutInflater.from(this).inflate(R.layout.left_drawer, null);\nandroidx.drawerlayout.widget.DrawerLayout.LayoutParams lp1 \u003d new androidx.drawerlayout.widget.DrawerLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT);\nandroidx.drawerlayout.widget.DrawerLayout.LayoutParams lp \u003d new androidx.drawerlayout.widget.DrawerLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT);\nandroid.widget.FrameLayout.LayoutParams fl \u003d new android.widget.FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);\nlp1.gravity \u003d (Gravity.RIGHT);\nlp.gravity \u003d (Gravity.LEFT);\nslideView1.setLayoutParams(lp1);\ninnerView.setLayoutParams(fl);\nslideView.setLayoutParams(lp);\ndrawer1.addView(innerView);\ndrawer.addView(drawer1);\ndrawer1.addView(slideView1);\ndrawer.addView(slideView);\nsetContentView(drawer);\ninitialize();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "480",
    "title": "NavigationBar - Check if Navbar Exists",
    "about": "The code checks if there is a navigation bar on the device.",
    "code": "Rect rectangle \u003d new Rect();\r\nDisplayMetrics displayMetrics \u003d new DisplayMetrics(); ac0.getWindow().getDecorView().getWindowVisibleDisplayFrame(rectangle); ac0.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);\r\nif (displayMetrics.heightPixels !\u003d (rectangle.top + rectangle.height())) {\r\n//nav bar exists\r\n}\r\nelse {\r\n//nav bar not exists\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "Viper Apps",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "316",
    "title": "NavigationBar - Hide",
    "about": "",
    "code": "getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "318",
    "title": "NavigationBar - Panel Color (HEX)",
    "about": "",
    "code": "// onCreate\r\n\r\nWindow window \u003d this.getWindow();\r\n\r\nwindow.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);\r\n\r\nwindow.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);\r\n\r\nwindow.setNavigationBarColor(Color.parseColor(\"#408010\"); // Цвет в формате hex",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "317",
    "title": "NavigationBar - Show",
    "about": "",
    "code": "getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "163",
    "title": "NavigationBar Example",
    "about": "",
    "code": "final androidx.drawerlayout.widget.DrawerLayout drawer \u003d new androidx.drawerlayout.widget.DrawerLayout(this);\nfinal View main \u003d (View) getLayoutInflater().inflate(R.layout.main, null);\nfinal ListView navList \u003d new ListView(this);\nnavList.setAdapter(new ArrayAdapter(getBaseContext(), android.R.layout.simple_list_item_1, str_list));\nandroidx.drawerlayout.widget.DrawerLayout.LayoutParams lp \u003d new androidx.drawerlayout.widget.DrawerLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT , LinearLayout.LayoutParams.MATCH_PARENT);\nlp.gravity\u003dGravity.START; navList.setLayoutParams(lp);\nnavList.setBackgroundColor(Color.WHITE);\ndrawer.addView(main, new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT));\ndrawer.addView(navList);\nsetContentView(drawer);\nnavList.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);\n\n\n\nnavList.setOnItemClickListener(new AdapterView.OnItemClickListener() {\n@Override\npublic void onItemClick(AdapterView _parent, View _view, final int _position, long _id) {\ndrawer.closeDrawer(Gravity.START);\nswitch (_position){\ncase 0:\nshowMessage(\"position 0 clicked\");\nbreak;\ncase 1:\nshowMessage(\"position 1 clicked\");\nbreak;\ncase 2:\nshowMessage(\"position 2 clicked\");\nbreak;\n}\n}});\nnavList.bringToFront();\nnavList.requestFocus();\ninitialize();\n\n\n\n\n//str_list make string variable and add menu to this string",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "443",
    "title": "NestedScrollView (AndroidX)",
    "about": "",
    "code": "androidx.core.widget.NestedScrollView nestedScrollView \u003d new androidx.core.widget.NestedScrollView(this);\n\nLinearLayout.LayoutParams layoutParams \u003d new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);\nnestedScrollView.setLayoutParams(layoutParams);\n\nnestedScrollView.setBackgroundColor(Color.WHITE);\n\nlinear1.removeAllViews();\nlinear1.addView(nestedScrollView);\nnestedScrollView.addView(linear2);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "157",
    "title": "New TimerTask",
    "about": "",
    "code": "timer \u003d new TimerTask(){\r\n@Override\r\npublic void run(){\r\nrunOnUiThread(new Runnable(){\r\n@Override\r\npublic void run(){\r\n//Your Code On Timer\r\n}\r\n});\r\n}\r\n};\r\n_timer.schedule(timer, (int)(4000));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "165",
    "title": "Notification",
    "about": "",
    "code": "//Generate Alert Feature\r\n\r\nNotification.Builder mBuilder \u003d new Notification.Builder(MainActivity.this);\r\nmBuilder.setSmallIcon(R.drawable.appicon);\r\nmBuilder.setContentTitle(\"You\u0027re Title\");\r\nmBuilder.setContentText(\"You\u0027re Text\");\r\nNotificationManager notificationManager \u003d (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\r\nint onx \u003d 1;\r\nnotificationManager.notify(onx, mBuilder.build());\r\n\r\n\r\n//Run activity and create alert notification\r\n\r\nNotification.Builder mBuilder \u003d new Notification.Builder(MainActivity.this);\r\nmBuilder.setSmallIcon(R.drawable.appicon);\r\nmBuilder.setContentTitle(\"You\u0027re Title\");\r\nmBuilder.setContentText(\"You\u0027re Text\");\r\nmBuilder.setDefaults(\r\nNotification.DEFAULT_SOUND\r\n| Notification.DEFAULT_VIBRATE);\r\nNotificationManager notificationManager \u003d (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\r\nIntent notificationIntent \u003d new Intent(\r\ngetApplicationContext(), SwwActivity.class);\r\nPendingIntent pendingIntent \u003d PendingIntent.getActivity(\r\ngetApplicationContext(),\r\n0,\r\nnotificationIntent,\r\nIntent.FLAG_ACTIVITY_NEW_TASK);\r\nmBuilder.setContentIntent(pendingIntent).setAutoCancel(true);\r\nmBuilder.setOngoing(true);\r\nint onx \u003d 2;\r\nnotificationManager.notify(onx, mBuilder.build());\r\n\r\n\r\n//Generate in-progress Notification\r\nNotification.Builder mBuilder \u003d new Notification.Builder(MainActivity.this);\r\nmBuilder.setSmallIcon(R.drawable.appicon);\r\nmBuilder.setContentTitle(\"You\u0027re Title\");\r\nmBuilder.setContentText(\"You\u0027re Text\");\r\nmBuilder.setDefaults(\r\nNotification.DEFAULT_SOUND\r\n| Notification.DEFAULT_VIBRATE);\r\nNotificationManager notificationManager \u003d (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\r\nIntent notificationIntent \u003d new Intent(\r\ngetApplicationContext(), SwwActivity.class);\r\nPendingIntent pendingIntent \u003d PendingIntent.getActivity(\r\ngetApplicationContext(),\r\n0,\r\nnotificationIntent,\r\nIntent.FLAG_ACTIVITY_NEW_TASK);\r\nmBuilder.setContentIntent(pendingIntent).setAutoCancel(false);\r\nmBuilder.setOngoing(true);\r\nint onx \u003d 3;\r\nnotificationManager.notify(onx, mBuilder.build());\r\n\r\n\r\n\r\n//Generate custome notification\r\n\r\nRemoteViews contentView \u003d new RemoteViews(getPackageName(), R.layout.custom_notification);\r\nNotification.Builder mBuilder \u003d new Notification.Builder(MainActivity.this);\r\nmBuilder.setSmallIcon(R.drawable.appicon);\r\nmBuilder.setContent(contentView);\r\nmBuilder.setDefaults( Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);\r\nNotificationManager notificationManager \u003d (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\r\nIntent notificationIntent \u003d new Intent(getApplicationContext(),\r\nMainActivity.class);\r\nPendingIntent pendingIntent \u003d PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);\r\nmBuilder.setContentIntent(pendingIntent).setAutoCancel(false);\r\nnotificationManager.notify(4, mBuilder.build());\r\n\r\n\r\n//Generate custome image notification\r\nNotification.Builder mBuilder \u003d new Notification.Builder(MainActivity .this); mBuilder.setSmallIcon(R.drawable.icon_name); Bitmap bm \u003d BitmapFactory.decodeResource(getResources(), R.drawable.icon_name); mBuilder.setLargeIcon(bm); Bitmap mm \u003d BitmapFactory.decodeResource(getResources(), R.drawable.icon_name); mBuilder.setStyle(new Notification.BigPictureStyle() .bigPicture(mm)); mBuilder.setContentTitle(\"You\u0027re Title\"); mBuilder.setContentText(\"You\u0027re Text\"); mBuilder.setDefaults( Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); NotificationManager notificationManager \u003d (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Intent notificationIntent \u003d new Intent(getApplicationContext(), MainActivity.class ); PendingIntent pendingIntent \u003d PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); mBuilder.setContentIntent(pendingIntent).setAutoCancel(true); notificationManager.notify(1, mBuilder.build());\r\n\r\n\r\n\r\n//Clear notification\r\nNotificationManager notificationManager \u003d (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(*ID*);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "166",
    "title": "NumberPicker",
    "about": "",
    "code": "final NumberPicker numb \u003d new NumberPicker(MainActivity.this);\r\nnumb.setMaxValue(100);\r\nnumb.setMinValue(1);\r\nnumb.setWrapSelectorWheel(true);\r\nlinear1.addView(numb);\r\nbutton1.setOnClickListener(new View.OnClickListener(){\r\n    public void onClick(View v){\r\n   textview1.setText(String.valueOf((long)(numb.getValue())));\r\n    }\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "167",
    "title": "ON/OFF Data Mobile",
    "about": "",
    "code": "private final static String COMMAND_L_ON \u003d \"svc data enable\r\n \";\r\nprivate final static String COMMAND_L_OFF \u003d \"svc data disable\r\n \";\r\nprivate final static String COMMAND_SU \u003d \"su\";\r\n\r\npublic static void setConnection(boolean enable,Context context){\r\n    String command;\r\n    if(enable)\r\n        command \u003d COMMAND_L_ON;\r\n    else\r\n        command \u003d COMMAND_L_OFF;\r\n    try{\r\n        java.lang.Process su \u003d Runtime.getRuntime().exec(COMMAND_SU);\r\n        java.io.DataOutputStream outputStream \u003d new java.io.DataOutputStream(su.getOutputStream());\r\n        outputStream.writeBytes(command);\r\n        outputStream.flush();\r\n        outputStream.writeBytes(\"exit\r\n\");\r\n        outputStream.flush();\r\n        try {\r\n            su.waitFor();\r\n        } catch (InterruptedException e) {\r\n            e.printStackTrace();\r\n        }\r\n        outputStream.close();\r\n    }catch(java.io.IOException e){\r\n        e.printStackTrace();\r\n    }\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "464",
    "title": "Open GPS Android settings",
    "about": "Abrir a configuração de localização do telefone.",
    "code": "Intent callGPSSettingIntent \u003d new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);\nstartActivity(callGPSSettingIntent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "383",
    "title": "Open keyboard",
    "about": "Add add source directly and paste this code",
    "code": "android.view.inputmethod.InputMethodManager imm \u003d (android.view.inputmethod.InputMethodManager) getSystemService(android.content.Context.INPUT_METHOD_SERVICE);\r\n  imm.showSoftInput(yourEditText, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "259",
    "title": "Open Url",
    "about": "",
    "code": "startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(\"https://site.ru\")));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "281",
    "title": "Override Activity Animation",
    "about": "",
    "code": "overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "168",
    "title": "OverScroll (HEX)",
    "about": "",
    "code": "if (Build.VERSION.SDK_INT \u003e\u003d 21) {\r\n\r\nandroid.widget.EdgeEffect edgeEffectTop \u003d new android.widget.EdgeEffect(this);\r\n\r\nedgeEffectTop.setColor(Color.parseColor(\"#9E9E9E\"));\r\n\r\nandroid.widget.EdgeEffect edgeEffectBottom \u003d new android.widget.EdgeEffect(this);\r\n\r\nedgeEffectBottom.setColor(Color.parseColor(\"#9E9E9E\"));\r\n\r\ntry {\r\njava.lang.reflect.Field f1 \u003d android.widget.ScrollView.class.getDeclaredField(\"mEdgeGlowTop\");\r\nf1.setAccessible(true);\r\nf1.set(vscroll1, edgeEffectTop);\r\n\r\njava.lang.reflect.Field f2 \u003d android.widget.ScrollView.class.getDeclaredField(\"mEdgeGlowBottom\");\r\nf2.setAccessible(true);\r\nf2.set(vscroll1, edgeEffectBottom);\r\n}\r\ncatch (Exception e)\r\n{\r\ne.printStackTrace();\r\n}\r\n} else {\r\n\r\nint glowDrawableId \u003d getResources().getIdentifier(\"overscroll_glow\", \"drawable\", \"android\");\r\n\r\nandroid.graphics.drawable.Drawable androidGlow \u003d getResources().getDrawable(glowDrawableId);\r\n\r\nandroidGlow.setColorFilter(Color.parseColor(\"#9E9E9E\"), PorterDuff.Mode.MULTIPLY);\r\n\r\nint edgeDrawableId \u003d getResources().getIdentifier(\"overscroll_edge\", \"drawable\", \"android\");\r\n\r\nandroid.graphics.drawable.Drawable androidEdge \u003d getResources().getDrawable(edgeDrawableId);\r\n\r\nandroidEdge.setColorFilter(Color.parseColor(\"#9E9E9E\"), PorterDuff.Mode.MULTIPLY);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "169",
    "title": "Overscroll (RGBG)",
    "about": "",
    "code": "//moreblock: |overScroll| |view:item| (namber:r) (namber:g) (namber:b)\r\n\r\nif (Build.VERSION.SDK_INT \u003e\u003d 21) {\r\n\r\nandroid.widget.EdgeEffect edgeEffectTop \u003d new android.widget.EdgeEffect(this);\r\n\r\nedgeEffectTop.setColor(Color.rgb((int)_r,(int)_g,(int)_b));\r\n\r\nandroid.widget.EdgeEffect edgeEffectBottom \u003d new android.widget.EdgeEffect(this);\r\n\r\nedgeEffectBottom.setColor(Color.rgb((int)_r,(int)_g,(int)_b));\r\n\r\ntry {\r\njava.lang.reflect.Field f1 \u003d android.widget.ScrollView.class.getDeclaredField(\"mEdgeGlowTop\");\r\nf1.setAccessible(true);\r\nf1.set(_item, edgeEffectTop);\r\n\r\njava.lang.reflect.Field f2 \u003d android.widget.ScrollView.class.getDeclaredField(\"mEdgeGlowBottom\");\r\nf2.setAccessible(true);\r\nf2.set(_item, edgeEffectBottom);\r\n}\r\ncatch (Exception e)\r\n{\r\ne.printStackTrace();\r\n}\r\n} else {\r\n\r\nint glowDrawableId \u003d getResources().getIdentifier(\"overscroll_glow\", \"drawable\", \"android\");\r\n\r\nandroid.graphics.drawable.Drawable androidGlow \u003d getResources().getDrawable(glowDrawableId);\r\n\r\nandroidGlow.setColorFilter(Color.rgb((int)_r,(int)_g,(int)_b), PorterDuff.Mode.MULTIPLY);\r\n\r\nint edgeDrawableId \u003d getResources().getIdentifier(\"overscroll_edge\", \"drawable\", \"android\");\r\n\r\nandroid.graphics.drawable.Drawable androidEdge \u003d getResources().getDrawable(edgeDrawableId);\r\n\r\nandroidEdge.setColorFilter(Color.rgb((int)_r,(int)_g,(int)_b), PorterDuff.Mode.MULTIPLY);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "170",
    "title": "Perform Click",
    "about": "",
    "code": "item.performClick();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "474",
    "title": "Permission request and checker (AndroidX)",
    "about": "Updated code for AndroidX library",
    "code": "",
    "androidv4_supported": "0",
    "androidx_supported": "1",
    "category": "Other",
    "source": "https://developer.android.com/training/permissions/requesting",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "285",
    "title": "Personalize TitleBar",
    "about": "",
    "code": "android.content.res.Resources resources \u003d MainActivity.this.getResources(); Bitmap icon \u003d BitmapFactory.decodeResource(resources, R.drawable.app_icon); MainActivity.this.setTaskDescription(new ActivityManager.TaskDescription(Html.fromHtml(\"Your Title\"), icon, Color.parseColor(\"#666666\")));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "172",
    "title": "Phone Build (New)",
    "about": "1. Create a new project in Sketchware.\r\n\r\n2. In VIEW area add a TextView for each parameter to be retrieved. We can retrieve Device, Model, Product, Manufacturer, Brand, API level, Board, Bootloader, Display, Fingerprint, Hardware, Host, and Id.\r\n3. Add following String variables: device, model, product, manufacturer, brand, api_level, board, boot, display, fingerprint, hardware, host, and id.\r\n4. In onCreate event use add source directly block and put following codes.\r\n5. After that set the text of TextViews using the String variables.\r\n6. Save and run the project. The app will display information about the current build, extracted from system properties.",
    "code": "device \u003d android.os.Build.DEVICE;\r\nmodel \u003d android.os.Build.MODEL;\r\nproduct \u003d android.os.Build.PRODUCT;\r\nmanufacturer \u003d android.os.Build.MANUFACTURER;\r\nbrand \u003d android.os.Build.BRAND;\r\napi_level \u003d android.os.Build.VERSION.SDK;\r\nboard \u003d android.os.Build.BOARD;\r\nboot \u003d android.os.Build.BOOTLOADER;\r\ndisplay \u003d android.os.Build.DISPLAY;\r\nfingerprint \u003d android.os.Build.FINGERPRINT;\r\nhardware \u003d android.os.Build.HARDWARE;\r\nhost \u003d android.os.Build.HOST;\r\nid \u003d android.os.Build.ID;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "171",
    "title": "Phone build (old)",
    "about": "",
    "code": "//Build Type\r\ntextview1.setText(Build.TYPE);\r\n\r\n//Build Tags\r\ntextview2.setText(Build.TAGS);\r\n\r\n//Build User\r\ntextview1.setText(Build.USER);\r\n\r\n//Build Unknown\r\ntextview1.setText(Build.UNKNOWN);\r\n\r\n//Build ID\r\ntextview1.setText(Build.ID);\r\n\r\n//Build Product\r\ntextview1.setText(Build.PRODUCT);\r\n\r\n//Build Display\r\ntextview1.setText(Build.DISPLAY);\r\n\r\n//Build Fingerprint\r\ntextview1.setText(Build.FINGERPRINT);\r\n\r\n//Build CPU\r\ntextview1.setText(Build.CPU_ABI);\r\n\r\n//Build Host\r\ntextview1.setText(Build.HOST);\r\n\r\n//Build Hardware\r\ntextview1.setText(Build.HARDWARE);\r\n\r\n//Build Serial\r\ntextview1.setText(Build.SERIAL);\r\n\r\n//Build Radio\r\ntextview1.setText(Build.RADIO);\r\n\r\n//Build Bootloader\r\ntextview1.setText(Build.BOOTLOADER);\r\n\r\n//Build Board\r\ntextview1.setText(Build.BOARD);\r\n\r\n//Build Version Security Path\r\ntextview1.setText(Build.VERSION.SECURITY_PATCH);\r\n\r\n//Build Brand\r\ntextview1.setText(Build.BRAND);\r\n\r\n//Build Version SDK\r\ntextview1.setText(Build.VERSION.SDK);\r\n\r\n//Get Model\r\ntextview1.setText(Build.MANUFACTURER.concat(\" \".concat(Build.MODEL)));\r\n\r\n//Get Realease\r\ntextview1.setText(Build.VERSION.RELEASE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "175",
    "title": "Pixel to DP",
    "about": "",
    "code": "//OnButton\r\nint pixels_first \u003d 37;\r\nint pixels_second \u003d 22;\r\nint pixels_third \u003d 43;\r\nint pixels_fourth \u003d 61;\r\nContext context \u003d getApplicationContext();\r\ntextview1.setText(\"Convert Pixels to  integer DPs value\r\n\"+pixels_first+ \"pixels \u003d \"+ getDPsFromPixels(context, pixels_first) + \"dp\r\n\"+pixels_second+ \"pixels \u003d \"+ getDPsFromPixels(context, pixels_second) + \"dp\r\n\"+pixels_third+ \"pixels \u003d \"+ getDPsFromPixels(context, pixels_third) + \"dp\r\n\"+pixels_fourth+ \"pixels \u003d \"+ getDPsFromPixels(context, pixels_fourth) + \"dp\r\n\r\n\");\r\ntextview1.setText(textview1.getText()+ \"Convert Pixels to  perfect DPs value\r\n\"+pixels_first+ \"pixels \u003d \"+ getActualDPsFromPixels(context, pixels_first) + \"dp\r\n\"+pixels_second+ \"pixels \u003d \"+ getActualDPsFromPixels(context, pixels_second) + \"dp\r\n\"+pixels_third+ \"pixels \u003d \"+ getActualDPsFromPixels(context, pixels_third) + \"dp\r\n\"+pixels_fourth+ \"pixels \u003d \"+ getActualDPsFromPixels(context,pixels_fourth) + \"dp\r\n\");\r\n\r\n\r\n//onCreate\r\npublic static int getDPsFromPixels(Context context, int pixels){\r\nandroid.content.res.Resources r \u003d context.getResources();\r\nint  dps \u003d Math.round(pixels/(r.getDisplayMetrics().densityDpi/160f));\r\nreturn dps;\r\n}\r\npublic static float getActualDPsFromPixels(Context context, int pixels){\r\nandroid.content.res.Resources r \u003d context.getResources();\r\nfloat  dps \u003d pixels/(r.getDisplayMetrics().densityDpi/160f);\r\nreturn dps;\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "173",
    "title": "Play music from path",
    "about": "",
    "code": "mp \u003d MediaPlayer.create(getApplicationContext(), Uri.fromFile(new java.io.File(currentfile)));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "372",
    "title": "Popup View",
    "about": "Add add source directly and paste this code",
    "code": "View popupView \u003d getLayoutInflater().inflate(R.layout.myview, null);\r\nfinal PopupWindow popup \u003d new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);\r\nt1.setOnClickListener(new OnClickListener() { public void onClick(View view) {\r\n//YOUR CODE/BLOCKS HERE\r\npopup.dismiss();\r\n} });\r\n\r\nt2.setOnClickListener(new OnClickListener() { public void onClick(View view) {\r\n//YOUR CODES/BLOCKS HERE\r\npopup.dismiss();\r\n} });\r\npopup.showAtLocation(popupView, Gravity.CENTER, 0, 0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "442",
    "title": "PopupMenu - Menu Items with icons",
    "about": "Menu items with icons.",
    "code": "androidx.appcompat.view.menu.androidx.appcompat.view.menu.MenuBuilder menuBuilder \u003dnew androidx.appcompat.view.menu.MenuBuilder(this);\nmenuBuilder.add(\"something\").setIcon(R.drawable.app_icon);\nandroidx.appcompat.view.menu.MenuHelper optionsMenu \u003d new androidx.appcompat.view.menu.MenuHelper(YourActivity.this, menuBuilder, view); optionsMenu.setForceShowIcon(true);\n // Set Item Click Listener menuBuilder.setCallback(new androidx.appcompat.view.menu.MenuBuilder.Callback() { @Override public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder menu, MenuItem item) { switch (item.getItemId()) { case R.id.opt1: // Handle option1 Click return true; case R.id.opt2: // Handle option2 Click return true; default: return false; } } @Override public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder menu) {} }); // Display the menu optionsMenu.show();\n\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "135",
    "title": "Progress Bar Color",
    "about": "",
    "code": "progressBar.getProgressDrawable().setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);\r\n\r\n\r\n\r\n//with drawable\r\nandroid.graphics.drawable.Drawable progressDrawable \u003d progressBar.getProgressDrawable().mutate(); progressDrawable.setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN); progressBar.setProgressDrawable(progressDrawable);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "136",
    "title": "Progress Bar Dialog (Horizontal)",
    "about": "",
    "code": "final ProgressDialog progressDoalog \u003d new ProgressDialog(this); \r\nfinal Handler handle \u003d new Handler() { \r\n@Override \r\npublic void handleMessage(Message msg) {\r\nsuper.handleMessage(msg); \r\nprogressDoalog.incrementProgressBy(1); \r\n} \r\n}; \r\nprogressDoalog.setMax(100); \r\nprogressDoalog.setMessage(\"Its loading....\"); \r\nprogressDoalog.setTitle(\"ProgressDialog bar example\"); \r\nprogressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); \r\nprogressDoalog.show(); \r\nnew Thread(new Runnable() { \r\n@Override public void run() { \r\ntry { \r\nwhile (progressDoalog.getProgress() \u003c\u003d progressDoalog.getMax()) { \r\nThread.sleep(200); \r\nhandle.sendMessage(handle.obtainMessage()); \r\nif (progressDoalog.getProgress() \u003d\u003d progressDoalog.getMax()) { \r\nprogressDoalog.dismiss(); \r\n} \r\n} \r\n} catch (Exception e) {\r\ne.printStackTrace(); \r\n} \r\n} \r\n}).start();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Dialog",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "137",
    "title": "Progress Bar Transfarant",
    "about": "",
    "code": "//Add Private\r\nprivate int progressStatus \u003d 0;\r\nprivate Handler handler \u003d new Handler();\r\n\r\n//Add on Button\r\n// Initialize a new instance of progress dialog\r\nfinal ProgressDialog pd \u003d new ProgressDialog(MainActivity.this);\r\n\r\n// Set progress dialog style horizontal\r\npd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);\r\n\r\n// Set the progress dialog background color transparent\r\npd.getWindow().setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(Color.TRANSPARENT));\r\n\r\npd.setIndeterminate(false);\r\n\r\n// Finally, show the progress dialog\r\npd.show();\r\n\r\n// Set the progress status zero on each button click\r\nprogressStatus \u003d 0;\r\n\r\n// Start the lengthy operation in a background thread\r\nnew Thread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nwhile(progressStatus \u003c 100){\r\n// Update the progress status\r\nprogressStatus +\u003d1;\r\n\r\n// Try to sleep the thread for 20 milliseconds\r\ntry{\r\nThread.sleep(20);\r\n}catch(InterruptedException e){\r\ne.printStackTrace();\r\n}\r\n\r\n// Update the progress bar\r\nhandler.post(new Runnable() {\r\n@Override\r\npublic void run() {\r\n// Update the progress status\r\npd.setProgress(progressStatus);\r\n// If task execution completed\r\nif(progressStatus \u003d\u003d 100){\r\n// Dismiss/hide the progress dialog\r\npd.dismiss();\r\n}\r\n}\r\n});\r\n}\r\n}\r\n}).start(); // Start the operation",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "134",
    "title": "Progress Dowload File",
    "about": "",
    "code": "//Fix by your self\r\n//Make By Me Aan Gabriel\r\n\r\nString urlDownload \u003d \"http://johncms.com/forum/index.php?act\u003dfile\u0026id\u003d40177\";\r\n\r\nDownloadManager.Request request \u003d new DownloadManager.Request(Uri.parse(urlDownload));\r\nrequest.setDescription(\"Testando\");\r\nrequest.setTitle(\"Download\");\r\nrequest.allowScanningByMediaScanner();\r\nrequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);\r\nrequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, \"teste.zip\");\r\nfinal DownloadManager manager \u003d (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);\r\nfinal long downloadId \u003d manager.enqueue(request);\r\nfinal android.widget.ProgressBar prog \u003d new android.widget.ProgressBar(this,null, android.R.attr.progressBarStyleHorizontal);\r\nprog.setPadding(0,0,0,0);\r\nprog.setIndeterminate(false);\r\nprog.setFitsSystemWindows(true);\r\nprog.setProgress(0);\r\nprog.setScrollBarStyle(android.widget.ProgressBar.SCROLLBARS_OUTSIDE_INSET);\r\nprog.setMax(100);\r\nViewGroup.LayoutParams vlp \u003d new ViewGroup.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);\r\nprog.setLayoutParams(vlp);\r\npl.addView(prog);\r\n\r\n\r\nnew Thread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nboolean downloading \u003d true;\r\nwhile (downloading) {\r\nDownloadManager.Query q \u003d new DownloadManager.Query();\r\nq.setFilterById(downloadId);\r\nandroid.database.Cursor cursor \u003d manager.query(q);\r\ncursor.moveToFirst();\r\nint bytes_downloaded \u003d cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));\r\n\r\nint bytes_total \u003d cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));\r\nif (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) \u003d\u003d DownloadManager.STATUS_SUCCESSFUL) {\r\ndownloading \u003d false;\r\n}\r\nfinal int dl_progress \u003d (int) ((bytes_downloaded * 100l) / bytes_total);\r\nrunOnUiThread(new Runnable() {\r\n@Override\r\npublic void run() {\r\nprog.setProgress((int) dl_progress);\r\n}\r\n});\r\n//Log.d(Constants.MAIN_VIEW_ACTIVITY, statusMessage(cursor));\r\ncursor.close();\r\n}\r\n}\r\n}).start();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "6",
    "title": "ProgressBar Color",
    "about": "",
    "code": "progressBar.getProgressDrawable().setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);\r\n\r\n\r\n\r\n//with drawable\r\nandroid.graphics.drawable.Drawable progressDrawable \u003d progressBar.getProgressDrawable().mutate(); progressDrawable.setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN); progressBar.setProgressDrawable(progressDrawable);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "49",
    "title": "Radio Button",
    "about": "",
    "code": "//Horizontal\r\n\r\nfinal RadioButton[] rb \u003d new RadioButton[5];\r\nfinal RadioButton[] gg \u003d new RadioButton[5];\r\n    RadioGroup rg \u003d new RadioGroup(this); \r\n\r\n//create the RadioGroup\r\n    rg.setOrientation(RadioGroup.HORIZONTAL);\r\n    for(int i\u003d0; i\u003c1; i++){\r\n       rb[i]  \u003d new RadioButton(this);          \r\n       rb[i].setText(\"Correct!\");\r\n       rb[i].setId(1);\r\n gg[i]  \u003d new RadioButton(this);          \r\n       gg[i].setText(\"Wrong!\");\r\n       gg[i].setId(2);\r\n\r\n       rg.addView(rb[i]);\r\nrg.addView(gg[i]);\r\nlinear1.addView(rg);\r\n}\r\n\r\n\r\n// Vertical\r\n\r\nfinal RadioButton[] rb \u003d new RadioButton[5];\r\nfinal RadioButton[] gg \u003d new RadioButton[5];\r\n    RadioGroup rg \u003d new RadioGroup(this); \r\n\r\n//create the RadioGroup\r\n    rg.setOrientation(RadioGroup.VERTICAL);\r\n    for(int i\u003d0; i\u003c1; i++){\r\n       rb[i]  \u003d new RadioButton(this);          \r\n       rb[i].setText(\"Correct!\");\r\n       rb[i].setId(1);\r\n gg[i]  \u003d new RadioButton(this);          \r\n       gg[i].setText(\"Wrong!\");\r\n       gg[i].setId(2);\r\n\r\n       rg.addView(rb[i]);\r\nrg.addView(gg[i]);\r\nlinear1.addView(rg);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "309",
    "title": "Radius",
    "about": "",
    "code": "android.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable();\r\ngd.setColor(Color.parseColor(\"#FFFFFF\"));\r\ngd.setCornerRadius(40);\r\nlinear1.setBackground(gd);\r\n\r\nuse with MoreBlock:\r\n\r\nandroid.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable();\r\ngd.setColor(Color.parseColor(_color));\r\ngd.setCornerRadius((int)_numb);\r\n_view.setBackground(gd);\r\n\r\n// _color your color string\r\n// _numb Radious Number\r\n// _view to view\r\n\r\n\r\n\r\nNote:\r\ngd.setCornerRadii(new float[] { 10, 10, 12, 12, 14, 14, 20, 20 }); //LeftTop, //RightTop, //RightBottom, //LeftBottom,\r\n\r\ngd.setCornerRadius(40); //For All Radius",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "374",
    "title": "Random password generator",
    "about": "Add add source directly and paste this code in any method after all blocks.",
    "code": "} \r\nprivate static String generateRandomPassword()\r\n{ \r\n    String upperCaseChars \u003d \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n    String lowerCaseChars \u003d \"abcdefghijklmnopqrstuvwxyz\";\r\n\r\n    String numberChars \u003d \"0123456789\";\r\n\r\n    String specialChars \u003d \"!@#$%^\u0026*()_-+\u003d\u003c\u003e?/{}~|\";\r\n\r\nint max_length \u003d 10;\r\n\r\nString allowedChars \u003d upperCaseChars +lowerCaseChars+numberChars+specialChars;\r\n    Random rn \u003d new Random();\r\n\r\n    StringBuilder sb \u003d new StringBuilder(max_length);\r\n\r\nsb.append(allowedChars.charAt(rn.nextInt(allowedChars.length()-1)));\r\n\r\n    for(int i\u003dsb.length();i \u003c max_length;++i){\r\n       sb.append(allowedChars.charAt(rn.nextInt(allowedChars.length())));\r\n    }\r\n\r\n    return  sb.toString();\r\n}\r\n{   \r\n\r\n//Below Code In On Button Click\r\n\r\nString pass \u003d generateRandomPassword();\r\ntextview1.setText(pass);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "344",
    "title": "Read Clipboard",
    "about": "",
    "code": "android.content.ClipboardManager clipboard \u003d (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);\r\nClipData clipData \u003d clipboard.getPrimaryClip();\r\nif (clipData !\u003d null) {\r\nclipdata \u003d clipData.getItemAt(0).getText().toString();\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "177",
    "title": "Read Resource",
    "about": "",
    "code": "java.io.InputStream ins \u003d getResources().openRawResource(R.drawable.file);\r\nStringBuilder text \u003d new StringBuilder();\r\ntry {\r\n java.io.BufferedReader br \u003d new java.io.BufferedReader(new java.io.InputStreamReader(ins));\r\n String line;\r\n while ((line \u003d br.readLine()) !\u003d null) {\r\n text.append(line);\r\n text.append(\u0027n\u0027);\r\n }\r\n br.close();\r\n}\r\ncatch (java.io.IOException e) {\r\n}\r\nEditText tv \u003d (EditText)findViewById(R.id.edittext1);\r\ntv.setText(text.toString());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "440",
    "title": "Remove all anim",
    "about": "Remove all anim",
    "code": "overridePendingTransition(0, 0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "370",
    "title": "Replace all",
    "about": "Add add source directly and paste this code",
    "code": "String str \u003d edit.getText().toString(); \r\n\t\t\t\tstr \u003d str.replaceAll(\"value\", \"text for replace\"); \r\n\t\t\t\tedit.setText(str);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "387",
    "title": "Request app permissions \u0026 Permissions checker",
    "about": "",
    "code": "// Here, thisActivity is the current activity\r\nif (ContextCompat.checkSelfPermission(thisActivity,\r\n        Manifest.permission.READ_CONTACTS)\r\n        !\u003d PackageManager.PERMISSION_GRANTED) {\r\n\r\n    // Permission is not granted\r\n    // Should we show an explanation?\r\n    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,\r\n            Manifest.permission.READ_CONTACTS)) {\r\n        // Show an explanation to the user *asynchronously* -- don\u0027t block\r\n        // this thread waiting for the user\u0027s response! After the user\r\n        // sees the explanation, try again to request the permission.\r\n    } else {\r\n        // No explanation needed; request the permission\r\n        ActivityCompat.requestPermissions(thisActivity,\r\n                new String[]{Manifest.permission.READ_CONTACTS},\r\n                MY_PERMISSIONS_REQUEST_READ_CONTACTS);\r\n\r\n        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an\r\n        // app-defined int constant. The callback method gets the\r\n        // result of the request.\r\n    }\r\n} else {\r\n    // Permission has already been granted\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "176",
    "title": "Request Focus",
    "about": "",
    "code": "youranywidget.requestFocus();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "414",
    "title": "Reverse list",
    "about": "No info...",
    "code": "// list1 your list string/map/...\njava.util.Collections.reverse(list1);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "178",
    "title": "RippleDrawable",
    "about": "",
    "code": "android.graphics.drawable.RippleDrawable ripdr \u003d new android.graphics.drawable.RippleDrawable(new android.content.res.ColorStateList(new int[][]{new int[]{}}, new int[]{ Color.GREEN}), new android.graphics.drawable.ColorDrawable(Color.WHITE), null);\r\nbutton1.setBackground(ripdr);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "119",
    "title": "Root Check",
    "about": "",
    "code": "try {\r\nRuntime.getRuntime().exec(\"su\"); \r\nrooted \u003d true; \r\n} catch (Exception e) { \r\nrooted \u003d false; \r\n} \r\n\r\nif(rooted) return;\r\n\r\ntry {\r\nRuntime.getRuntime().exec(\"which su\"); \r\nrooted \u003d true; \r\n} catch (Exception e) { \r\nrooted \u003d false; \r\n} \r\n\r\nif(rooted) return;\r\n\r\ntry {\r\nRuntime.getRuntime().exec(\"/system/xbin/which su\"); \r\nrooted \u003d true; \r\n} catch (Exception e) { \r\nrooted \u003d false; \r\n} \r\n\r\nif(rooted) return;\r\n\r\ntry {\r\nRuntime.getRuntime().exec(\"/system/bin/which su\"); \r\nrooted \u003d true; \r\n} catch (Exception e) { \r\nrooted \u003d false; \r\n} \r\n\r\nif(rooted) return;\r\n\r\n//make rooted boolean and try just one way",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "275",
    "title": "Round The Edges",
    "about": "",
    "code": "android.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable();\r\ngd.setColor(Color.parseColor(\"#FFFFFF\"));\r\ngd.setCornerRadius(20);\r\nlinear2.setBackground(gd);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "417",
    "title": "Run in thread",
    "about": "AsyncTask - Run in thread",
    "code": "AsyncTask.execute(new Runnable() {\n   @Override\n   public void run() {\n      //TODO your background code\n   }\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "426",
    "title": "Run in Thread (ThreadLoader)",
    "about": "Run in the stream after the execution of which there will be a launch in the main thread.",
    "code": "public class ThreadLoader {\n    Runnable onSuccess;\n    java.os.Handler handler \u003d new java.os.Handler() {\n        @Override\n        public void handleMessage(android.os.Message msg) {\n            switch(msg.what) {\n                case 0x10:\n                    onSuccess.run();\n                    break;\n            }\n        }\n    };\n    public ThreadLoader(final Runnable runnable, Runnable onSuccess) {\n        this.onSuccess \u003d onSuccess;\n        new Thread(new Runnable() {\n            @Override\n            public void run() {\n                runnable.run();\n                handler.sendEmptyMessage(0x10);\n            }\n        }).start();\n    }\n}\n\n// example for using:\nnew ThreadLoader(new Runnable() {\n                @Override\n                public void run() {\n                    // here what will be make in background\n                }\n            }, new Runnable() {\n                @Override\n                public void run() {\n                    // here what will be after background (its is main thread)\n                }\n            });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "179",
    "title": "Run Intent App",
    "about": "",
    "code": "//Run an activity to external apo\r\nIntent intent \u003d (Intent)new Intent(); \r\nintent.setClassName(edittext1.getText().toString(), edittext1.getText().toString().concat(\".\".concat(edittext2.getText().toString()))); //Specified ID.setClassName(\"Package name\", \"Package name.Class name\");\r\nstartActivity(intent);\r\n\r\n//edittext1 to write com.app.name\r\n//edittext2 to set Class Activity",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Intent",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "180",
    "title": "Runable Example",
    "about": "",
    "code": "void startTime(){\r\nhandler.postDelayed(runnable, 1000);\r\n}\r\nint totalDelay\u003d0;\r\nHandler handler \u003d new Handler(); \r\nRunnable runnable \u003d new Runnable() { \r\n@Override\r\npublic void run() {\r\ntotalDelay++;\r\nif(totalDelay\u003c\u003d20){\r\nhandler.postDelayed(runnable, 1000);\r\n}\r\ntextview1.setText(totalDelay+\" Second\");\r\n}\r\n};",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "410",
    "title": "Runtime - Free Memory",
    "about": "Runtime - Free Memory",
    "code": "\nRuntime SData \u003d Runtime.getRuntime();\nfirstStorage \u003d SData.freeMemory();\nSData.gc();\nafterStorage \u003d SData.freeMemory();\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "181",
    "title": "RunTime Permision",
    "about": "",
    "code": "//You need permission example:\n\u003cuses-permission android:name\u003d\"android.permission.READ_PHONE_STATE\" /\u003e\n\n\n//Put onCreate\n}\nprivate final int REQUEST_PERMISSION_PHONE_STATE\u003d1;\n\nprivate void showPhoneStatePermission() {\n    int permissionCheck \u003d androidx.core.content.ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_PHONE_STATE);\n    if (permissionCheck !\u003d android.content.pm.PackageManager.PERMISSION_GRANTED) {\n        if (\tandroidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale(this,\n                android.Manifest.permission.READ_PHONE_STATE)) {\n                showExplanation(\"Permission Needed\", \"Rationale\", android.Manifest.permission.READ_PHONE_STATE, REQUEST_PERMISSION_PHONE_STATE);\n        } else {\n            requestPermission(android.Manifest.permission.READ_PHONE_STATE, REQUEST_PERMISSION_PHONE_STATE);\n        }\n    } else {\n        Toast.makeText(MainActivity.this, \"Permission (already) Granted!\", Toast.LENGTH_SHORT).show();\n    }\n}\n\n @Override\npublic void onRequestPermissionsResult(\n        int requestCode,\n        String permissions[],\n        int[] grantResults) {\n    switch (requestCode) {\n        case REQUEST_PERMISSION_PHONE_STATE:\n            if (grantResults.length \u003e 0\n                    \u0026\u0026 grantResults[0] \u003d\u003d android.content.pm.PackageManager.PERMISSION_GRANTED) {\n                Toast.makeText(MainActivity.this, \"Permission Granted!\", Toast.LENGTH_SHORT).show();\n            } else {\n                Toast.makeText(MainActivity.this, \"Permission Denied!\", Toast.LENGTH_SHORT).show();\n            }\n    }\n}\n\nprivate void showExplanation(String title,\n                             String message,\n                             final String permission,\n                             final int permissionRequestCode) {\n    AlertDialog.Builder builder \u003d new AlertDialog.Builder(this);\n    builder.setTitle(title)\n            .setMessage(message)\n            .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {\n                public void onClick(DialogInterface dialog, int id) {\n                    requestPermission(permission, permissionRequestCode);\n                }\n            });\n    builder.create().show();\n}\n\nprivate void requestPermission(String permissionName, int permissionRequestCode) {\n    \tandroidx.core.app.ActivityCompat.requestPermissions(this,\n            new String[]{permissionName}, permissionRequestCode);\n}\n\n\npublic void nothing() {",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "99",
    "title": "Save Image",
    "about": "",
    "code": "Bitmap bm \u003d ((android.graphics.drawable.BitmapDrawable) imageview1.getDrawable()).getBitmap();\r\n\r\ntry {\r\njava.io.File file \u003d new java.io.File(getExternalCacheDir() + \"/image.jpg\");\r\n\r\njava.io.OutputStream out \u003d new java.io.FileOutputStream(file);\r\n\r\nbm.compress(Bitmap.CompressFormat.JPEG, 100, out);\r\n\r\nout.flush();\r\nout.close();\r\n\r\n} catch (Exception e) { showMessage(e.toString()); }\r\nIntent iten \u003d new Intent(android.content.Intent.ACTION_SEND);\r\n\r\niten.setType(\"*/*\");\r\n\r\niten.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new java.io.File(getExternalCacheDir() + \"/image.jpg\")));\r\n\r\nstartActivity(Intent.createChooser(iten, \"Save Or Share\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "182",
    "title": "Screen ON",
    "about": "",
    "code": "getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\r\n\r\n//For Remove\r\ngetWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "183",
    "title": "Screen Orientation",
    "about": "",
    "code": "//Lanscape Mode\r\nsetRequestedOrientation(android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);\r\n\r\n//Portrait Mode\r\nsetRequestedOrientation(android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "184",
    "title": "ScreenBrightness",
    "about": "",
    "code": "WindowManager.LayoutParams layout \u003d getWindow().getAttributes();\r\nlayout.screenBrightness \u003d 0.5F ; getWindow().setAttributes(layout);\r\n\r\n// 0.5 is %50\r\n// 1 is %100",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "185",
    "title": "Screenshot",
    "about": "",
    "code": "}\r\nprivate void openScreenshot(java.io.File imageFile) {\r\nIntent intent \u003d new Intent(); \r\nintent.setAction(Intent.ACTION_VIEW);\r\nUri uri \u003d Uri.fromFile(imageFile); \r\nintent.setDataAndType(uri, \"image/*\");\r\nstartActivity(intent);\r\n}\r\n\r\nprivate void takeScreenshot() {\r\nDate now \u003d new Date(); \r\nandroid.text.format.DateFormat.format(\"yyyy-MM-dd_hh:mm:ss\", now);\r\ntry {\r\nString mPath \u003d Environment.getExternalStorageDirectory().toString() + \"/\" + now + \".jpg\";\r\nView v1 \u003d getWindow().getDecorView().getRootView();\r\nv1.setDrawingCacheEnabled(true);\r\nBitmap bitmap \u003d Bitmap.createBitmap(v1.getDrawingCache()); \r\nv1.setDrawingCacheEnabled(false);\r\njava.io.File imageFile \u003d new java.io.File(mPath);\r\njava.io.FileOutputStream outputStream \u003d new java.io.FileOutputStream(imageFile);\r\nint quality \u003d 100; \r\nbitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);\r\noutputStream.flush();\r\noutputStream.close();\r\nopenScreenshot(imageFile);\r\n} catch (Throwable e) {\r\ne.printStackTrace();\r\n}\r\n\r\n\u003cuses-permission android:name\u003d\"android.permission.WRITE_EXTERNAL_STORAGE\" /\u003e\r\n\r\n/*\r\nIf you want to use this on fragment view then use:\r\nView v1 \u003d getActivity().getWindow().getDecorView().getRootView();\r\n//getActivity are Your activity example: (this).getWindow()\r\ninstead of\r\nView v1 \u003d getWindow().getDecorView().getRootView();\r\n*/",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "186",
    "title": "Scroll Enable/Disable",
    "about": "",
    "code": "listview1.setHorizontalScrollBarEnabled(false);\r\nlistview1.setVerticalScrollBarEnabled(false);\r\n//enable it\r\n//just change it to true",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "307",
    "title": "Scroll Settings",
    "about": "",
    "code": "vscroll1.setHorizontalScrollBarEnabled(false);\r\nvscroll1.setVerticalScrollBarEnabled(false);\r\nvscroll1.setOverScrollMode(ScrollView.OVER_SCROLL_NEVER);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "371",
    "title": "Scrollable TabLayout",
    "about": "1. In VIEW area of main.xml add a Linear Vertical linear1 with width and height as match_parent. Inside it add a Linear Horizontal linear2.\r\n2. Switch On AppCompat and design.\r\n3. In onCreate event, use an add source directly block and put following codes.",
    "code": "// Create a TabLayout (tabLayout)\ncom.google.android.material.tabs.TabLayout tabLayout \u003d new com.google.android.material.tabs.TabLayout(this);\n// Make TabLayout scrollable\ntabLayout.setTabMode(com.google.android.material.tabs.TabLayout.MODE_SCROLLABLE);\n// Add Tabs to the TabLayout\ntabLayout.addTab(tabLayout.newTab().setText(\"Sunday\")); tabLayout.addTab(tabLayout.newTab().setText(\"Monday\")); tabLayout.addTab(tabLayout.newTab().setText(\"Tuesday\"));\ntabLayout.addTab(tabLayout.newTab().setText(\"Wednesday\")); tabLayout.addTab(tabLayout.newTab().setText(\"Thursday\")); tabLayout.addTab(tabLayout.newTab().setText(\"Friday\"));\ntabLayout.addTab(tabLayout.newTab().setText(\"Saturday\"));\n// Add TabLayout to linear2\nlinear2.addView(tabLayout);\n// Add OnTabSelectedListener to the TabLayout\ntabLayout.addOnTabSelectedListener(new com.google.android.material.tabs.TabLayout.OnTabSelectedListener(){\n@Override\npublic void onTabSelected(com.google.android.material.tabs.TabLayout.Tab tab){\nswitch(tab.getText().toString()){\ncase \"Sunday\":\nlinear1.setBackgroundColor(Color.RED);\nbreak;\ncase \"Monday\":\nlinear1.setBackgroundColor(Color.parseColor(\"#aaddab\"));\nbreak;\ncase \"Tuesday\":\nlinear1.setBackgroundColor(Color.parseColor(\"#0dddad\"));\nbreak;\ncase \"Wednesday\":\nlinear1.setBackgroundColor(Color.BLUE);\nbreak;\ncase \"Thursday\":\nlinear1.setBackgroundColor(Color.YELLOW);\nbreak;\ncase \"Friday\":\nlinear1.setBackgroundColor(Color.WHITE);\nbreak;\ncase \"Saturday\":\nlinear1.setBackgroundColor(Color.GREEN);\nbreak;\n}\n}\n@Override\npublic void onTabReselected(com.google.android.material.tabs.TabLayout.Tab tab){\n}\n@Override\npublic void onTabUnselected(com.google.android.material.tabs.TabLayout.Tab tab){\n}\n\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "187",
    "title": "ScrollBar + Overscroll",
    "about": "",
    "code": "//moreblock: |customScrollBar| |view:item| (namber:r) (namber:g) (namber:b)\r\n\r\ntry {\r\njava.lang.reflect.Field mScrollCacheField \u003d View.class.getDeclaredField(\"mScrollCache\");\r\n\r\nmScrollCacheField.setAccessible(true);\r\n\r\nObject mScrollCache \u003d mScrollCacheField.get(_item);\r\n\r\njava.lang.reflect.Field scrollBarField \u003d mScrollCache.getClass().getDeclaredField(\"scrollBar\");\r\n\r\nscrollBarField.setAccessible(true);\r\n\r\nObject scrollBar \u003d scrollBarField.get(mScrollCache);\r\n\r\njava.lang.Class param \u003d android.graphics.drawable.Drawable.class;\r\n\r\njava.lang.reflect.Method method \u003d scrollBar.getClass().getDeclaredMethod(\"setVerticalThumbDrawable\", param);\r\n\r\nmethod.setAccessible(true);\r\n\r\nmethod.invoke(scrollBar, getResources().getDrawable(R.drawable.scroll_res));\r\n}\r\ncatch(Exception e)\r\n{\r\ne.printStackTrace();\r\n}\r\n\r\nif (Build.VERSION.SDK_INT \u003e\u003d 21) {\r\n\r\nandroid.widget.EdgeEffect edgeEffectTop \u003d new android.widget.EdgeEffect(this);\r\n\r\nedgeEffectTop.setColor(Color.rgb((int)_r,(int)_g,(int)_b));\r\n\r\nandroid.widget.EdgeEffect edgeEffectBottom \u003d new android.widget.EdgeEffect(this);\r\n\r\nedgeEffectBottom.setColor(Color.rgb((int)_r,(int)_g,(int)_b));\r\n\r\ntry {\r\njava.lang.reflect.Field f1 \u003d android.widget.ScrollView.class.getDeclaredField(\"mEdgeGlowTop\");\r\nf1.setAccessible(true);\r\nf1.set(_item, edgeEffectTop);\r\n\r\njava.lang.reflect.Field f2 \u003d android.widget.ScrollView.class.getDeclaredField(\"mEdgeGlowBottom\");\r\nf2.setAccessible(true);\r\nf2.set(_item, edgeEffectBottom);\r\n}\r\ncatch (Exception e)\r\n{\r\ne.printStackTrace();\r\n}\r\n} else {\r\n\r\nint glowDrawableId \u003d getResources().getIdentifier(\"overscroll_glow\", \"drawable\", \"android\");\r\n\r\nandroid.graphics.drawable.Drawable androidGlow \u003d getResources().getDrawable(glowDrawableId);\r\n\r\nandroidGlow.setColorFilter(Color.rgb((int)_r,(int)_g,(int)_b), PorterDuff.Mode.MULTIPLY);\r\n\r\nint edgeDrawableId \u003d getResources().getIdentifier(\"overscroll_edge\", \"drawable\", \"android\");\r\n\r\nandroid.graphics.drawable.Drawable androidEdge \u003d getResources().getDrawable(edgeDrawableId);\r\n\r\nandroidEdge.setColorFilter(Color.rgb((int)_r,(int)_g,(int)_b), PorterDuff.Mode.MULTIPLY);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "188",
    "title": "ScrollBar Drawable",
    "about": "",
    "code": "//Fix Program By Aan Gabriel\r\ntry {\r\njava.lang.reflect.Field mScrollCacheField \u003d View.class.getDeclaredField(\"mScrollCache\"); \r\nmScrollCacheField.setAccessible(true);\r\nObject mScrollCache \u003d mScrollCacheField.get(listview1);\r\njava.lang.reflect.Field scrollBarField \u003d mScrollCache.getClass().getDeclaredField(\"scrollBar\"); \r\nscrollBarField.setAccessible(true); \r\nObject scrollBar \u003d scrollBarField.get(mScrollCache);\r\njava.lang.Class param \u003d android.graphics.drawable.Drawable.class;\r\njava.lang.reflect.Method method \u003d scrollBar.getClass().getDeclaredMethod(\"setVerticalThumbDrawable\", param);\r\nmethod.setAccessible(true); method.invoke(scrollBar, getResources().getDrawable(R.drawable.scrollbar_style));\r\n} catch(Exception e) {\r\ne.printStackTrace();\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "190",
    "title": "ScrollBar FullScroll",
    "about": "",
    "code": "myscrollview.fullScroll(View.FOCUS_DOWN);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "189",
    "title": "ScrollBar Style",
    "about": "",
    "code": "ScrollBar.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);\r\n\r\nScrollBar.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);\r\n\r\nScrollBar.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);\r\n\r\nScrollBar.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_INSET);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "321",
    "title": "ScrollBar Style - INSIDE_INSET",
    "about": "",
    "code": "ScrollBar.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "319",
    "title": "ScrollBar Style - INSIDE_OVERLAY",
    "about": "",
    "code": "ScrollBar.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "322",
    "title": "ScrollBar Style - OUTSIDE_INSET",
    "about": "",
    "code": "ScrollBar.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_INSET);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "320",
    "title": "ScrollBar Style - OUTSIDE_OVERLAY",
    "about": "",
    "code": "ScrollBar.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "494",
    "title": "ScrollView - onScrollChangeListener",
    "about": "Detect Position of your scrollView or enable onScrollChangeListener.",
    "code": "scroller.getViewTreeObserver()\r\n.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {\r\n\t@Override\r\n\tpublic void onScrollChanged() {\r\n\t\tif (scroller.getChildAt(0).getBottom() \u003c\u003d (scroller.getHeight() + scroller.getScrollY())) {\r\n\t\t\t\t// Scrollview is now at bottom you can hide the fab for examples.\r\n\t\t} else {\r\n\t\t\t// ScrollView is now at the top you can show fab for example\r\n\t\t}\r\n\t}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "Submitted by AlucardTN",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "376",
    "title": "ScrollView - onScrolledDown / onScrolledUp",
    "about": "Add add source directly and paste this code",
    "code": "scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {\r\n            @Override\r\n            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {\r\n                if(oldScrollY\u003escrollY){\r\n                    fab.setVisibility(View.GONE);\r\n                    //if scrolled down\r\n                } else {\r\n                    //if scrolled up\r\n                    fab.setVisibility(View.VISIBLE);\r\n                    \r\n                }\r\n                /*Code from Sketchcode*/\r\n            }\r\n        });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "261",
    "title": "SDK Version",
    "about": "",
    "code": "sdk \u003d (double)(Build.VERSION.SDK);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "191",
    "title": "SearchView",
    "about": "",
    "code": "listview1.setTextFilterEnabled (true);\r\n}\r\n@Override\r\npublic boolean onCreateOptionsMenu(Menu menu) { SearchView mSearchView \u003d new SearchView(getActionBar().getThemedContext());\r\nmSearchView.setQueryHint(\"Search Here\");\r\nmSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){\r\n\t@Override\r\n\tpublic boolean onQueryTextSubmit(String query)\r\n\t{\r\n\t\t// TODO: Implement this method\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean onQueryTextChange(String newText)\r\n\t{\r\n\t\t// TODO: Implement this method\r\n\t\tif (TextUtils.isEmpty(newText)) {\r\n listview1.clearTextFilter();\r\n } else {\r\n listview1.setFilterText(newText);\r\n }\r\n return true;\r\n\t}\r\n});\r\n\tmenu.add(\"Search\")\r\n\t.setIcon(R.drawable.ic_search_white)\r\n\t.setActionView(mSearchView)\r\n\t.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); \r\n\r\n\r\nreturn true;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,View",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "218",
    "title": "SecretTextView",
    "about": "",
    "code": "}\r\npublic class MutableForegroundColorSpan extends android.text.style.CharacterStyle\r\n implements android.text.style.UpdateAppearance {\r\n\r\n public static final String TAG \u003d \"MutableForegroundColorSpan\";\r\n\r\n private int mColor;\r\n\r\n @Override\r\n public void updateDrawState(TextPaint tp) {\r\n tp.setColor(mColor);\r\n }\r\n\r\n public int getColor() {\r\n return mColor;\r\n }\r\n\r\n public void setColor(int color) {\r\n this.mColor \u003d color;\r\n }\r\n}\r\n\r\npublic class SecretTextView extends TextView {\r\n private String mTextString;\r\n private SpannableString mSpannableString;\r\n\r\n private double[] mAlphas;\r\n private MutableForegroundColorSpan[] mSpans;\r\n private boolean mIsVisible;\r\n private boolean mIsTextResetting \u003d false;\r\n private int mDuration \u003d 2500;\r\n\r\n ValueAnimator animator;\r\n ValueAnimator.AnimatorUpdateListener listener \u003d new ValueAnimator.AnimatorUpdateListener() {\r\n @Override\r\n public void onAnimationUpdate(ValueAnimator valueAnimator) {\r\n Float percent \u003d (Float)valueAnimator.getAnimatedValue();\r\n resetSpannableString(mIsVisible ? percent : 2.0f - percent);\r\n }\r\n };\r\n\r\n public SecretTextView(Context context) {\r\n super(context);\r\n init();\r\n }\r\n\r\n public SecretTextView(Context context, AttributeSet attrs) {\r\n super(context, attrs);\r\n init();\r\n }\r\n\r\n private void init(){\r\n this.mIsVisible \u003d false;\r\n animator \u003d ValueAnimator.ofFloat(0.0f, 2.0f);\r\n animator.addUpdateListener(listener);\r\n animator.setDuration(mDuration);\r\n }\r\n\r\n public void toggle(){\r\n if (mIsVisible) {\r\n hide();\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n public void show(){\r\n mIsVisible \u003d true;\r\n animator.start();\r\n }\r\n\r\n public void hide(){\r\n mIsVisible \u003d false;\r\n animator.start();\r\n }\r\n\r\n public void setIsVisible(boolean isVisible){\r\n mIsVisible \u003d isVisible;\r\n resetSpannableString(isVisible \u003d\u003d true ? 2.0f : 0.0f);\r\n }\r\n\r\n public boolean getIsVisible(){\r\n return mIsVisible;\r\n }\r\n\r\n private void resetSpannableString(double percent){\r\n \tmIsTextResetting \u003d true;\r\n \t\r\n int color \u003d getCurrentTextColor();\r\n for (int i \u003d 0; i \u003c this.mTextString.length(); i++) {\r\n MutableForegroundColorSpan span \u003d mSpans[i];\r\n span.setColor(Color.argb(clamp(mAlphas[i] + percent), Color.red(color), Color.green(color), Color.blue(color)));\r\n }\r\n\r\n setText(mSpannableString);\r\n \r\n mIsTextResetting \u003d false;\r\n }\r\n\r\n private void resetAlphas(int length){\r\n mAlphas \u003d new double[length];\r\n for(int i\u003d0; i \u003c mAlphas.length; i++){\r\n mAlphas[i] \u003d Math.random()-1;\r\n }\r\n }\r\n\r\n private void resetIfNeeded(){\r\n if (!mIsTextResetting){\r\n mTextString \u003d getText().toString();\r\n mSpannableString \u003d new SpannableString(this.mTextString);\r\n mSpans \u003d new MutableForegroundColorSpan[this.mTextString.length()];\r\n for (int i \u003d 0; i \u003c this.mTextString.length(); i++) {\r\n MutableForegroundColorSpan span \u003d new MutableForegroundColorSpan();\r\n mSpannableString.setSpan(span, i, i+1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);\r\n mSpans[i] \u003d span;\r\n }\r\n resetAlphas(mTextString.length());\r\n resetSpannableString(mIsVisible ? 2.0f : 0);\r\n }\r\n }\r\n\r\n public void setText(String text) {\r\n super.setText(text);\r\n resetIfNeeded();\r\n }\r\n\r\n @Override\r\n public void setText(CharSequence text, TextView.BufferType type) {\r\n super.setText(text, type);\r\n resetIfNeeded();\r\n }\r\n\r\n private int clamp(double f){\r\n return (int)(255*Math.min(Math.max(f, 0), 1));\r\n }\r\n\r\n public void setDuration(int duration){\r\n this.mDuration \u003d duration;\r\n animator.setDuration(duration);\r\n }\r\n}\r\n\r\npublic void nothing() {\r\n\r\n//To USED\r\nfinal SecretTextView aan \u003d new SecretTextView(MainActivity.this);\r\naan.setText(\"Click This Text You Can See The Secret View\");\r\naan.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\naan.setTextSize((float)40);\r\nlinear1.addView(aan);\r\naan.setDuration(3000);\r\naan.setIsVisible(true);\r\naan.setOnClickListener(new View.OnClickListener() {\r\n@Override\r\npublic void onClick(View view) {\r\naan.toggle();\r\n}\r\n});\r\n\r\n//Doc\r\nsecretTextView.show(); // fade in\r\nsecretTextView.hide(); // fade out\r\nsecretTextView.toggle(); // fade in or out depending on current state\r\nTo change the duration of the fading (default is 2.5 seconds):\r\nsecretTextView.setDuration(3000); // set fade duration to 3 seconds\r\nTo set visibility without fading in or out:\r\nsecretTextView.setIsVisible(true);\r\nsecretTextView.setIsVisible(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "461",
    "title": "Security Firebase",
    "about": "Security in firebase",
    "code": "{\n \"rules\": {\n\".read\": \"auth !\u003d null\",\n \".write\": \"auth !\u003d null\" }\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Firebase",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "130",
    "title": "SeekBar set Color",
    "about": "",
    "code": "seekbar1.getProgressDrawable().setColorFilter(Color.parseColor(\"#FF00FF\"), PorterDuff.Mode.SRC_IN);\r\nseekbar1.getThumb().setColorFilter(Color.parseColor(\"#FF00FF\"), PorterDuff.Mode.SRC_IN);\r\n\r\n//seekbar1 is your seekbar ID\r\n//#FF00FF is your RRGGBB color",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "192",
    "title": "Set Alpha",
    "about": "",
    "code": "linear1.setOnClickListener(new View.OnClickListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void onClick(View _v) { \r\n\t\t\t\tlinear2.setAlpha((float)(0.5d));\r\n\t\t\t}\r\n\t\t});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "462",
    "title": "set edittext bottom-line color",
    "about": "set edittext bottom-line color",
    "code": "edittext1.getBackground().mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "193",
    "title": "Set Elevation",
    "about": "",
    "code": "//this is code for moreblock\r\n_view.setElevation((int)_number);\r\n\r\n//and this is normal code\r\nlinear1.setElevation(10f);\r\n//linear1 is LinearLayout",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "194",
    "title": "Set Gravity",
    "about": "",
    "code": "textview1.setGravity(Gravity.RIGHT); textview1.setTextDirection(View.TEXT_DIRECTION_LTR);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "195",
    "title": "Set Radious",
    "about": "",
    "code": "android.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable();\r\ngd.setColor(Color.parseColor(\"#FFFFFF\"));\r\ngd.setCornerRadius(40);\r\nlinear1.setBackground(gd);\r\n\r\nuse with MoreBlock:\r\n\r\nandroid.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable();\r\ngd.setColor(Color.parseColor(_color));\r\ngd.setCornerRadius((int)_numb);\r\n_view.setBackground(gd);\r\n\r\n// _color your color string\r\n// _numb Radious Number\r\n// _view to view\r\n\r\n\r\n\r\nNote:\r\ngd.setCornerRadii(new float[] { 10, 10, 12, 12, 14, 14, 20, 20 }); //LeftTop, //RightTop, //RightBottom, //LeftBottom,\r\n\r\ngd.setCornerRadius(40); //For All Radius",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "196",
    "title": "Set Rotation X",
    "about": "",
    "code": "button1.setRotationX((float)25);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "197",
    "title": "Set Rotation Y",
    "about": "",
    "code": "button1.setRotationY((float)25);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "198",
    "title": "Set Scale",
    "about": "",
    "code": "float x\u003dpreview.getScaleX(), y\u003dpreview.getScaleY(),yenix\u003dx-1,yeniy\u003dy-1; preview.setScaleX(yenix);preview.setScaleY(yeniy);\r\n\r\n\r\nfloat x\u003dpreview.getScaleX(), y\u003dpreview.getScaleY(),yenix\u003dx+1,yeniy\u003dy+1; preview.setScaleX(yenix);preview.setScaleY(yeniy);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "385",
    "title": "Set Screen Orientation Landscape/Portrait/Both",
    "about": "Add add source directly and paste this code",
    "code": "//Landscape\r\nsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);\r\n//Portrait\r\nsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);\r\n\r\n//Both\r\nsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNDEFINED);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "264",
    "title": "Set System Typeface",
    "about": "",
    "code": "textview1.setTypeface(Typeface.DEFAULT);\r\n textview1.setTypeface(Typeface.SANS_SERIF);\r\n textview1.setTypeface(Typeface.SERIF);\r\n textview1.setTypeface(Typeface.MONOSPACE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Font",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "199",
    "title": "Set Text Size",
    "about": "",
    "code": "textview1.setTextSize((float)14);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "200",
    "title": "Set Transtition",
    "about": "",
    "code": "overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);\r\n\r\n\r\noverridePendingTransition(android.R.anim.overshoot_interpolator, android.R.anim.overshoot_interpolator);\r\n\r\n\r\noverridePendingTransition(android.R.anim.linear_interpolator, android.R.anim.linear_interpolator);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "209",
    "title": "Set Typeface in Drawer",
    "about": "Id in the drawer all start with _drawer_. Change item id ...",
    "code": "_drawer_textview1.setTypeface(Typeface.createFromAsset(getAssets(),\"fonts/Ꭽ鎭㎭Ꭽꎭ.ttf\"), 0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Font",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "201",
    "title": "Set X",
    "about": "",
    "code": "imageview1.setX(80);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "202",
    "title": "Set Y",
    "about": "",
    "code": "imageview1.setY(120);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "448",
    "title": "setAllCaps",
    "about": "Disable or enable Caps for button",
    "code": "button1.setAllCaps(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "203",
    "title": "SetLayerShadowColor",
    "about": "",
    "code": "textview1.setShadowLayer(5,5,5, Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "447",
    "title": "setStateListAnimator",
    "about": "Remove shadows from button",
    "code": "button1.setStateListAnimator(null);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "365",
    "title": "Shadow for View",
    "about": "Add add source directly and paste this code",
    "code": "//15 - height of shadow\r\ntry {\r\nif(Build.VERSION.SDK_INT \u003e\u003d 21) {\r\nitem_id.setElevation(15f);\r\n}\r\n} catch (Exception e) {}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "85",
    "title": "Shadow on ListView",
    "about": "P.S:\r\ntransLayersNum (Variable: Number) - the number of transparent shadow layers\r\nlistview (View: ListView) - ListView to which you want to apply the effect\r\nWithout a background, it does not look very good, but it is worth adding a background and it will already be less usable ...",
    "code": "new Handler().postDelayed(new Runnable() {\r\n@Override public void run() {\r\nfinal int[] clr \u003d new int[(int)_transLayersNum + 1];\r\nfor(int i \u003d 0; i \u003c _transLayersNum; i++) {\r\nclr[i] \u003d (Color.parseColor(\"#00000000\"));\r\n}\r\nclr[clr.length-1] \u003d (Color.parseColor(\"#505050\"));\r\nView view;\r\nfor(int i \u003d 0; i \u003c _listviee.getChildCount(); i++) {\r\nfinal int firstListItemPosition \u003d _listviee.getFirstVisiblePosition();\r\nfinal int lastListItemPosition \u003d firstListItemPosition + _listviee.getChildCount() - 1;\r\nif (i \u003c firstListItemPosition || i \u003e lastListItemPosition ) {\r\nview \u003d _listviee.getAdapter().getView(i, null, _listviee);\r\n} else {\r\nfinal int childIndex \u003d i - firstListItemPosition;\r\nview \u003d _listviee.getChildAt(childIndex);\r\n}\r\nandroid.graphics.drawable.Drawable[] layers \u003d new android.graphics.drawable.Drawable[2];\r\nif(view.getBackground() !\u003d null) {\r\nlayers[0] \u003d view.getBackground();\r\n} else {\r\nlayers[0] \u003d new android.graphics.drawable.ColorDrawable(Color.parseColor(\"#00000000\"));\r\n}\r\nfinal android.graphics.drawable.GradientDrawable shadow \u003d new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.TOP_BOTTOM, clr);\r\nlayers[1] \u003d shadow;\r\nandroid.graphics.drawable.LayerDrawable ld \u003d new android.graphics.drawable.LayerDrawable(layers);\r\nview.setBackground(ld);\r\n}\r\n}\r\n}, 100);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "204",
    "title": "Shape XML as BG",
    "about": "",
    "code": "//Save at drawable\r\n//Save as shape.xml\r\n\u003cshape xmlns:android\u003d\"http://schemas.android.com/apk/res/android\"\r\nandroid:shape\u003d\"rectangle\" \u003e\r\n\u003csolid android:color\u003d\"#eeffee\" /\u003e\r\n\u003cstroke\r\nandroid:width\u003d\"2dp\"\r\nandroid:color\u003d\"#00cc00\" /\u003e\r\n\u003cpadding\r\nandroid:bottom\u003d\"5dp\"\r\nandroid:left\u003d\"5dp\"\r\nandroid:right\u003d\"5dp\"\r\nandroid:top\u003d\"5dp\" /\u003e\r\n\u003ccorners android:radius\u003d\"20dp\" /\u003e\r\n\u003c/shape\u003e\r\n\r\nbutton1.setBackgroundResource(R.drawable.shape);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Xml",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "205",
    "title": "Share any View",
    "about": "",
    "code": "Bitmap image \u003d Bitmap.createBitmap(_view.getWidth(), _view.getHeight(), Bitmap.Config.ARGB_8888);\r\nCanvas canvas \u003d new Canvas(image);\r\nandroid.graphics.drawable.Drawable bgDrawable \u003d _view.getBackground();\r\nif (bgDrawable!\u003dnull) {\r\nbgDrawable.draw(canvas);\r\n} else{\r\ncanvas.drawColor(Color.WHITE);\r\n}\r\n_view.draw(canvas);\r\n\r\njava.io.File pictureFile \u003d new java.io.File(getExternalCacheDir() + \"/image.jpg\");\r\nif (pictureFile \u003d\u003d null) {\r\nLog.d(\"MainActivity\", \"Error creating media file, check storage permissions: \");\r\nreturn;\r\n}\r\ntry {\r\njava.io.FileOutputStream fos \u003d new java.io.FileOutputStream(pictureFile); \r\nimage.compress(Bitmap.CompressFormat.PNG, 90, fos);\r\nfos.close();\r\n} catch (java.io.FileNotFoundException e) {\r\nLog.d(\"MainActivity\", \"File not found: \" + e.getMessage());\r\n} catch (java.io.IOException e) {\r\nLog.d(\"MainActivity\", \"Error accessing file: \" + e.getMessage());\r\n}\r\nIntent iten \u003d new Intent(android.content.Intent.ACTION_SEND);\r\niten.setType(\"*/*\");\r\niten.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new java.io.File(getExternalCacheDir() + \"/image.jpg\")));\r\nstartActivity(Intent.createChooser(iten, \"Send image\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,View",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "298",
    "title": "Share on Social Network",
    "about": "",
    "code": "try{\r\nIntent sharingIntent \u003d new Intent(Intent.ACTION_SEND);\r\nsharingIntent.setType(\"text/plain\");\r\nsharingIntent.putExtra(Intent.EXTRA_TEXT, \"Текст сообщения\");\r\nsharingIntent.setPackage(\"com.whatsapp\");\r\nstartActivity(sharingIntent);\r\n} catch (Exception e) {\r\nToast.makeText(getActivity(),\"Приложение не установлено\",Toast.LENGTH_SHORT).show();\r\n}\r\n\r\n/*Текст сообщения можно заменить, а вместо com.whatsapp вы можете подставить почти любое приложение. \r\nВот несколько вариантов:\r\n* com.vkontakte.android - ВКонтакте\r\n* com.whatsapp - WhatsApp\r\n* com.facebook.katana - Facebook\r\n* org.telegram.multi - Multigram\r\n* org.tel+gram.messenger - Tеl+grаm\r\n* advanced.twitter.android - Twitter\r\n* com.google.android.apps.plus - Google+\r\n*/",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "290",
    "title": "Share Text",
    "about": "",
    "code": "Intent i \u003d new Intent(android.content.Intent.ACTION_SEND); i.setType(\"text/plain\"); i.putExtra(android.content.Intent.EXTRA_SUBJECT, b); i.putExtra(android.content.Intent.EXTRA_TEXT, a); startActivity(Intent.createChooser(i,\"Share using\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "364",
    "title": "SharedPrefence - Save Boolean data",
    "about": "Add add source directly and paste this code",
    "code": "data.edit().putBoolean(\"name\", true).commit();\r\n//Create SharedPrefence data",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "53",
    "title": "Shimmer TextView",
    "about": "",
    "code": "final ShimmerTextView b \u003d new ShimmerTextView(this);\r\n\r\nb.setText(\"Shimer View\");\r\nb.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nb.setTextSize(30);\r\nb.setTextColor(Color.RED);\r\nlinear2.addView(b);\r\n\r\n\r\n\r\n\r\n\r\nfinal Shimmer shimmer \u003d new Shimmer();\r\nshimmer.start(b);\r\n\r\n\r\n//Button\r\n\r\nfinal ShimmerButton bb \u003d new ShimmerButton(this);\r\n\r\nbb.setText(\"Shimer View\");\r\nbb.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nbb.setTextSize(30);\r\nbb.setTextColor(Color.RED);\r\nlinear2.addView(bb);\r\n\r\n\r\n\r\n\r\n\r\nfinal Shimmer shimmerbut \u003d new Shimmer();\r\nshimmerbut.start(bb);\r\n\r\n\r\n\r\n//For Toggle\r\n\r\nfinal Shimmer shimmer \u003d new Shimmer();\r\nfinal Shimmer shimmer2 \u003d new Shimmer();\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\nif (shimmer !\u003d null \u0026\u0026 shimmer.isAnimating()) {\r\n    shimmer.cancel();\r\n} else {\r\n    shimmer.start(b);\r\n}\r\nif (shimmer2 !\u003d null \u0026\u0026 shimmer2.isAnimating()) {\r\n    shimmer2.cancel();\r\n} else {\r\n    shimmer2.start(bb);\r\n}\r\n}\r\n});\r\n\r\n\r\n// DON\u0027T COPY THIS CODE TO YOUR PROJECT! It is just an example\r\nshimmer.setRepeatCount(0)\r\n    .setDuration(500)\r\n    .setStartDelay(300)\r\n    .setDirection(Shimmer.ANIMATION_DIRECTION_RTL)\r\n    .setAnimatorListener(new Animator.AnimatorListener(){});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "401",
    "title": "Show/Hide Password EditText",
    "about": "Show hide password in edittext",
    "code": "//text into password style - Hide password\nedittext1.setTransformationMethod(android.text.method.PasswordTransformationMethod.getInstance());\n\n\n//password into text - Show password\nedittext1.setTransformationMethod(android.text.method.HideReturnsTransformationMethod.getInstance());\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "260",
    "title": "Skype Call",
    "about": "",
    "code": "private static final String SKYPE_PATH_GENERAL \u003d \"com.skype.raider\";\r\nprivate static final String SKYPE_PATH_OLD \u003d \"com.skype.raider.contactsync.ContactSkypeOutCallStartActivity\";\r\nprivate static final String SKYPE_PATH_NEW \u003d \"com.skype.raider.Main\";\r\n\r\nIntent skypeIntent \u003d new Intent().setAction(\"android.intent.action.CALL_PRIVILEGED\");\r\nskypeIntent.setData(Uri.parse(\"tel:\" + skype));\r\n\r\nif (isIntentAvailable(context, skypeIntent.setClassName(SKYPE_PATH_GENERAL, SKYPE_PATH_NEW))) {\r\n    context.startActivity(skypeIntent);\r\n} else if (isIntentAvailable(context, skypeIntent.setClassName(SKYPE_PATH_GENERAL, SKYPE_PATH_OLD))) {\r\n    context.startActivity(skypeIntent);\r\n} else {\r\n    Toast.makeText(context, \"Error\", Toast.LENGTH_LONG).show();\r\n}\r\n\r\n\r\n}\r\npublic static boolean isIntentAvailable(Context context, Intent intent) {\r\n    final PackageManager packageManager \u003d context.getPackageManager();\r\n    List\u003cResolveInfo\u003e list \u003d packageManager.queryIntentActivities(\r\n        intent, PackageManager.MATCH_DEFAULT_ONLY);\r\n    return list.size() \u003e 0;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "239",
    "title": "Snackbar",
    "about": "",
    "code": "com.google.android.material.snackbar.Snackbar sb \u003d com.google.android.material.snackbar.Snackbar.make(linear1, \"Message\", com.google.android.material.snackbar.Snackbar.LENGTH_LONG); \nsb.setAction(\"Button\", new View.OnClickListener(){ @Override public void onClick(View v){ } }); \nsb.show();\n\n//activate library AppCompat and Design\n\n//linear1 \u003d you widget",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "362",
    "title": "Sort list string by alphabet",
    "about": "Create list string \u0027liststring\u0027 or replace \u0027liststring\u0027 on your list string.",
    "code": "java.util.Collections.sort(liststring, String.CASE_INSENSITIVE_ORDER);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "122",
    "title": "Spinner Custom",
    "about": "",
    "code": "String[] countryNames\u003d{\"India\",\"China\",\"Australia\"};\r\nint flags[] \u003d {R.drawable.icon1, R.drawable.icon2, R.drawable.icon3};\r\nCustomAdapter customAdapter\u003dnew CustomAdapter(getApplicationContext(),flags,countryNames);\r\nspinner1.setAdapter(customAdapter);\r\n\r\n}\r\npublic class CustomAdapter extends BaseAdapter {\r\nContext context;\r\nint flags[];\r\nString[] countryNames;\r\nLayoutInflater inflter;\r\npublic CustomAdapter(Context applicationContext, int[] flags, String[] countryNames) {\r\nthis.context \u003d applicationContext;\r\nthis.flags \u003d flags;\r\nthis.countryNames \u003d countryNames;\r\ninflter \u003d (LayoutInflater.from(applicationContext));\r\n}\r\n\r\n@Override\r\npublic int getCount() {\r\nreturn flags.length;\r\n}\r\n@Override\r\npublic Object getItem(int i) {\r\nreturn null;\r\n}\r\n@Override public long getItemId(int i) {\r\nreturn 0;\r\n}\r\n@Override\r\npublic View getView(int i, View view, ViewGroup viewGroup) {\r\nview \u003d inflter.inflate(R.layout.custom, null); \r\nImageView icon \u003d (ImageView) view.findViewById(R.id.imageview1);\r\nTextView names \u003d (TextView) view.findViewById(R.id.textview1); \r\nicon.setImageResource(flags[i]); \r\nnames.setText(countryNames[i]);\r\nreturn view;\r\n}\r\n\r\n//Create Custom with custom.xml name\r\n//add imageview1 and textview1",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "123",
    "title": "Spinner Custom BG item",
    "about": "",
    "code": "final ArrayAdapter\u003cString\u003e spinnerArrayAdapter \u003d new ArrayAdapter\u003cString\u003e(getBaseContext(),android.R.layout.simple_spinner_dropdown_item,List){\r\n     @Override\r\n      public View getDropDownView(int position, View convertView,\r\n                                        ViewGroup parent) {\r\n                View view \u003d super.getDropDownView(position, convertView, parent);\r\n                TextView tv \u003d (TextView) view;\r\n                if(position%2 \u003d\u003d 1) {\r\n                    // Set the item background color\r\n                    tv.setBackgroundColor(Color.parseColor(\"#FFF9A600\"));\r\n                }\r\n                else {\r\n                    // Set the alternate item background color\r\n                    tv.setBackgroundColor(Color.parseColor(\"#FFE49200\"));\r\n                }\r\n                return view;\r\n            }\r\n        };\r\n        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\r\n        spinner1.setAdapter(spinnerArrayAdapter);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "124",
    "title": "Spinner Disable Item",
    "about": "",
    "code": "final ArrayAdapter\u003cString\u003e spinnerArrayAdapter \u003d new ArrayAdapter\u003cString\u003e(getBaseContext(),android.R.layout.simple_spinner_dropdown_item,List){\r\n\t@Override\r\n            public boolean isEnabled(int position){\r\n                if(position \u003d\u003d 1)\r\n                {\r\n                    // Disable the second item from Spinner\r\n                    return false;\r\n                }\r\n                else\r\n                {\r\n                    return true;\r\n                }\r\n            }\r\n     @Override\r\n      public View getDropDownView(int position, View convertView,\r\n                                        ViewGroup parent) {\r\n                View view \u003d super.getDropDownView(position, convertView, parent);\r\n                TextView tv \u003d (TextView) view;\r\n                if(position \u003d\u003d 1){\r\n                    tv.setTextColor(Color.GRAY);\r\n                }\r\n                else {\r\n                    tv.setTextColor(Color.BLACK);\r\n                }\r\n                return view;\r\n            }\r\n        };\r\n        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\r\n        spinner1.setAdapter(spinnerArrayAdapter);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "125",
    "title": "Spinner Hidden Item",
    "about": "",
    "code": "final ArrayAdapter\u003cString\u003e spinnerArrayAdapter \u003d new ArrayAdapter\u003cString\u003e(getBaseContext(),android.R.layout.simple_spinner_dropdown_item,List){\r\n            @Override\r\n            public View getDropDownView(int position, View convertView,\r\n                                        ViewGroup parent) {\r\n                View view \u003d super.getDropDownView(position, convertView, parent);\r\n                TextView tv \u003d (TextView) view;\r\n                if(position \u003d\u003d 1){\r\n                    // Hide the second item from Spinner\r\n                    tv.setVisibility(View.GONE);\r\n                }\r\n                else {\r\n                    tv.setVisibility(View.VISIBLE);\r\n                }\r\n                return view;\r\n            }\r\n        };\r\n        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\r\n        spinner1.setAdapter(spinnerArrayAdapter);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "121",
    "title": "Spinner in ActionBar",
    "about": "",
    "code": "}\r\n@Override\r\npublic boolean onCreateOptionsMenu(Menu menu){\r\n // Add List\r\n menu.add(\"Menu\")\r\n .setIcon(R.drawable.ic_chat_white);\r\n\r\n return true;\r\n}\r\n\r\n@Override\r\npublic boolean onOptionsItemSelected(final MenuItem item){\r\n \r\n switch (item.getTitle().toString()) {\r\n case \"Menu\":\r\n showMessage(\"Clicked\");\r\n return true;\r\n default: \r\n return super.onOptionsItemSelected(item);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "126",
    "title": "Spinner Set Text Color",
    "about": "",
    "code": "((TextView) spinner1.getChildAt(0)).setTextColor(Color.WHITE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "212",
    "title": "Split Array Code",
    "about": "",
    "code": "list.addAll(Arrays.asList(string_value_with_array_code.split(\", /* WHERE IT SHOULD BE SPLIT AT */\")));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "211",
    "title": "Split String",
    "about": "",
    "code": "String s\u003d \"Aan.Gabriel.Gymkhana\";\r\nString[] parts \u003d s.split(\".\");\r\nString part1 \u003d parts[0];\r\nString part2 \u003d parts[1];\r\nString part3 \u003d parts[2];",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "470",
    "title": "Status Bar - Color Change",
    "about": "Replace your choice of color instead \"FFFFFFFF\".",
    "code": "getWindow().setStatusBarColor(0xFFFFFFFF);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,UI",
    "source": "Code sent by Toastcode",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "405",
    "title": "StatusBar - Translucent status",
    "about": "StatusBar - Translucent status.\nFor 21+ api level.",
    "code": "if (Build.VERSION.SDK_INT \u003e\u003d Build.VERSION_CODES.LOLLIPOP) {  Window w \u003d this.getWindow();\nw.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);\nw.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);\nw.setStatusBarColor(0xFF008375); w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "450",
    "title": "Statusbar change icon color",
    "about": "Statusbar change icon color",
    "code": "try {\r\nif(Build.VERSION.SDK_INT \u003e\u003d 21) {\r\nlinear1.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);\r\n       }\r\n} finally {\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "54",
    "title": "STDout To TextView",
    "about": "",
    "code": "java.lang.System.setOut(new java.io.PrintStream(new java.io.OutputStream() {\r\njava.io.ByteArrayOutputStream outputStream \u003d new java.io.ByteArrayOutputStream();\r\n@Override\r\npublic void write(int oneByte) throws java.io.IOException {\r\noutputStream.write(oneByte);\r\ntextview1.setText(new String(outputStream.toByteArray()));\r\n}\r\n}));\r\n//Testing the System.out stream\r\njava.lang.System.out.println(\"Test\");\r\njava.lang.System.out.println(\"Test 2\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "310",
    "title": "String Base64",
    "about": "",
    "code": "String encoded \u003d java.util.Base64.getEncoder().encodeToString(string.getBytes());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "399",
    "title": "String encode to Base64 FIX",
    "about": "yourstring \u003d get string to encode to base64\nyourstring2 \u003d output string (encoded to base64)",
    "code": "byte[] theByteArray \u003d yourstring.getBytes();\nString yourstring2 \u003d android.util.Base64.encodeToString(theByteArray, android.util.Base64.DEFAULT);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "398",
    "title": "String to Base64 FIX",
    "about": "String to Base64 FIX",
    "code": "byte[] theByteArray \u003d yourstring.getBytes();\nString yourstringbase64 \u003d android.util.Base64.encodeToString(theByteArray, android.util.Base64.DEFAULT);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "50",
    "title": "Style Button/Text",
    "about": "",
    "code": "android.graphics.drawable.GradientDrawable style \u003d new android.graphics.drawable.GradientDrawable();\r\nstyle.setCornerRadius((float)20);\r\nstyle.setColor(new android.content.res.ColorStateList(new int[][] {{ -android.R.attr.state_pressed} , {android.R.attr.state_pressed}}, new int [] {Color.parseColor(\"#FF0000\"), Color.parseColor(\"#000000\")}));\r\nstyle.setStroke((int)5, new android.content.res.ColorStateList(new int [][] {{ -android.R.attr.state_pressed}, {android.R.attr.state_pressed}}, new int [] {Color.parseColor(\"#0000FF\"), Color.parseColor(\"#00FF00\")}));\r\nbutton1.setBackground(style);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "213",
    "title": "Swipe Detection",
    "about": "",
    "code": "linear2.setOnTouchListener(new View.OnTouchListener() {@Override public boolean onTouch(View p1, MotionEvent p2){ switch(p2.getAction()) { case MotionEvent.ACTION_DOWN: f \u003d p2.getX();break; case MotionEvent.ACTION_UP: t \u003d p2.getX();if (((f - t) \u003c -250)) {_slideLeft();} if (((t - f) \u003c -250)) {_slideRight();}break;}return true;}});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "129",
    "title": "Switch - Custom",
    "about": "Add switch1 to the screen, download the image named img_res1, img_res2 via Image Manager.",
    "code": "switch1.setTrackResource(R.drawable.img_res1);\r\n\r\nswitch1.setThumbResource(R.drawable.img_res2);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "128",
    "title": "Switch - FindViewById",
    "about": "",
    "code": "Switch sw1 \u003d (Switch)findViewById(R.id.switch1);\r\n\r\nSwitch sw1 \u003d (Switch)inflate.findViewById(R.id.switch1);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "127",
    "title": "Switch Set Color",
    "about": "",
    "code": "switch1.getTrackDrawable().setColorFilter(Color.parseColor(\"#FF00FF\"), PorterDuff.Mode.SRC_IN);\r\n\r\n//switch1 is your switch ID\r\n//#FF00FF is your RRGGBB color",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "438",
    "title": "Tablayout AndroidX",
    "about": "código actualizado para la nueva actualización de sketchware(AndroidX) ",
    "code": "//Tablayout Androidx by Michael\n\nviewPager \u003d new androidx.viewpager.widget.ViewPager(this);\n viewPager.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));\n MyPagerAdapter adapter \u003d new MyPagerAdapter();\n viewPager.setAdapter(adapter);\n viewPager.setCurrentItem(1);\n base.addView(viewPager);\n\n tabLayout \u003d new com.google.android.material.tabs.TabLayout(this);\n\ntabLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\n tabLayout.setTabGravity(tabLayout.GRAVITY_FILL);\n tabLayout.setSelectedTabIndicatorColor(Color.parseColor(\"#000000\"));\n tabLayout.setTabTextColors(Color.parseColor(\"#1976d2\"), Color.parseColor(\"#00ffff\"));\n\n\n //tabLayout.setupWithViewPager(viewPager);\n cod.addView(tabLayout);\ncod.setElevation(5f);\n\n }\n\n private androidx.viewpager.widget.ViewPager viewPager;\n private com.google.android.material.tabs.TabLayout tabLayout;\n\n private class MyPagerAdapter extends androidx.viewpager.widget.PagerAdapter {\n  public int getCount() {\n   return 2;\n\n  }\n\n  @Override public Object instantiateItem(ViewGroup collection, int position) {\n   LayoutInflater inflater \u003d (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n   View v \u003d inflater.inflate(R.layout.empty, null);\n   LinearLayout container \u003d (LinearLayout) v.findViewById(R.id.linear1);\n\n   if (position \u003d\u003d 0) {\n    ViewGroup parent \u003d (ViewGroup) layout1.getParent();\n    if (parent !\u003d null) {\n     parent.removeView(layout1);\n    }container.addView(layout1);}\n\n   else if (position \u003d\u003d 1) {\n    ViewGroup parent \u003d (ViewGroup) layout2.getParent();\n    if (parent !\u003d null) {\n     parent.removeView(layout2);\n    }\n    container.addView(layout2);}\n\n   collection.addView(v, 0);\n   return v;\n  }\n  @Override public void destroyItem(ViewGroup collection, int position, Object view) {\n   collection.removeView((View) view);\n   trash.addView((View) view);\n  }\n  @Override public CharSequence getPageTitle(int position) {\n   switch (position) {\n    case 0:\n     return \"actualizar\";\n    case 1:\n     return \"subidas\";\n    default:\n     return null;\n   }\n\n  }\n  @Override public boolean isViewFromObject(View arg0, Object arg1) {\n   return arg0 \u003d\u003d ((View) arg1);}\n  @Override public Parcelable saveState() {\n   return null;\n  }\n }\n {",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "105",
    "title": "Tabs Layout",
    "about": "",
    "code": "viewPager \u003d new androidx.viewpager.widget.ViewPager(this);\n\nviewPager.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\nMyPagerAdapter adapter \u003d new MyPagerAdapter();\nviewPager.setAdapter(adapter);\nviewPager.setCurrentItem(0);\nbase.addView(viewPager);\n\ntabLayout \u003d new com.google.android.material.tabs.TabLayout(this);\ntabLayout.setTabGravity(tabLayout.GRAVITY_FILL);\ntabLayout.setSelectedTabIndicatorColor(Color.parseColor(\"#000000\"));\n///You can change tab underline(indicator) color \nfrom here\n\n\ntabLayout.setTabTextColors(Color.parseColor(\"#00ffffff\"),///Tab color when not selected Color.parseColor(\"#000000\"));///Tab color when selected\n///You can change tab text color from here\n\n\nfinal int[ ] tabIcons \u003d {\nR.drawable.ic_1,\nR.drawable.ic_2,\nR.drawable.ic_3,\nR.drawable.ic_4\n};\n///here ic_1, ic_2, etc. are the names of icons which you added in image manager\n\n\ntabLayout.setupWithViewPager(viewPager);\ntabLayout.getTabAt(0).setIcon(tabIcons[0]);\ntabLayout.getTabAt(1).setIcon(tabIcons[1]);\ntabLayout.getTabAt(2).setIcon(tabIcons[2]);\ntabLayout.getTabAt(3).setIcon(tabIcons[3]);\n\ncod.addView(tabLayout);\n}\n\nprivate class MyPagerAdapter extends androidx.viewpager.widget.PagerAdapter {\npublic int getCount() {\nreturn 4;\n}\n\n@Override public Object instantiateItem(ViewGroup collection, int position) {\n\nLayoutInflater inflater \u003d (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);\nView v \u003d inflater.inflate(R.layout.empty, null);\n\nLinearLayout container \u003d (LinearLayout) v.findViewById(R.id.linear1);\n\nif (position \u003d\u003d 0) {\nViewGroup parent \u003d (ViewGroup) layout1.getParent();\nif (parent !\u003d null) {\nparent.removeView(layout1);\n}container.addView(layout1);\n\n} else if (position \u003d\u003d 1) {\nViewGroup parent \u003d (ViewGroup) layout2.getParent();\nif (parent !\u003d null) {\nparent.removeView(layout2);\n}\ncontainer.addView(layout2);\n\n} else if (position \u003d\u003d 2) {\nViewGroup parent \u003d (ViewGroup) layout3.getParent();\nif (parent !\u003d null) {\nparent.removeView(layout3);\n}\ncontainer.addView(layout3);\n\n} else if (position \u003d\u003d 3) {\nViewGroup parent \u003d (ViewGroup) layout4.getParent();\nif (parent !\u003d null) {\nparent.removeView(layout4);\n}\ncontainer.addView(layout4);\n}\ncollection.addView(v, 0);\nreturn v;\n}\n@Override public void destroyItem(ViewGroup collection, int position, Object view) {\ncollection.removeView((View) view);\ntrash.addView((View) view);\n}\n@Override public CharSequence getPageTitle(int position) {\nswitch (position) {\ncase 0:\nreturn \"HOME\";\ncase 1:\nreturn \"SETTINGS\";\ncase 2:\nreturn \"PROFILE\";\ncase 3:\nreturn \"MUSIC\";\ndefault:\nreturn null;\n}\n///you can change the name of tabs from HOME, SETTINGS, PROFILE, etc you want to\n\n\n}\n@Override public boolean isViewFromObject(View arg0, Object arg1) {\nreturn arg0 \u003d\u003d ((View) arg1);}\n@Override public Parcelable saveState() {\nreturn null;\n}\n}\nandroidx.viewpager.widget.ViewPager viewPager;\ncom.google.android.material.tabs.TabLayout tabLayout;\nprivate void foo() {\n\n\n///add 4 linearV with height\u003dWRAP_CONTENT and width \u003d MATCH_PARENT and name that linears id (layout1, layout2, layout3, layout4)\n///add 2 linearV or H with height and width \u003d WRAP_CONTENT and name their id (base and trash)\n///add one more linearH on the topp of all linear and name its id (cod), it will show yout tabs\n///base and trash should be set in between cod and that 4 linears\n///add anything to that 4 linear will show in the screen as  different when particular tab will be clicked\n///now add a custom layout (empty) and add a linear V or H with height and width \u003d MATCH_PARENT",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "214",
    "title": "TapTarget View",
    "about": "",
    "code": "//To Use\r\n//_view\r\n//_title\r\n//_msg\r\n//_bgcolor\r\n\r\nTapTargetView.showFor(MainActivity.this,\r\nTapTarget.forView(_view, _title, _msg)\r\n.outerCircleColorInt(Color.parseColor(_bgcolor))\r\n.outerCircleAlpha(0.96f)\r\n.targetCircleColorInt(Color.parseColor(\"#FFFFFF\"))\r\n.titleTextSize(25)\r\n.titleTextColorInt(Color.parseColor(\"#FFFFFF\"))\r\n.descriptionTextSize(18)\r\n.descriptionTextColor(android.R.color.white)\r\n.textColorInt(Color.parseColor(\"#FFFFFF\"))\r\n.textTypeface(Typeface.SANS_SERIF)\r\n.dimColor(android.R.color.black)\r\n.drawShadow(true)\r\n.cancelable(true)\r\n.tintTarget(true)\r\n.transparentTarget(true)\r\n//.icon(Drawable)\r\n.targetRadius(60),\r\n\r\nnew TapTargetView.Listener() {\r\n@Override\r\npublic void onTargetClick(TapTargetView view) {\r\nsuper.onTargetClick(view);\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,View",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "215",
    "title": "Task TitleBar",
    "about": "",
    "code": "String label \u003d (\"OnTask TitleBar\"); \r\n\r\nint color \u003d Color.rgb(90,70,220); \r\n\r\nandroid.content.res.Resources resources \u003d MainActivity.this.getResources(); \r\n\r\nBitmap icon \u003d BitmapFactory.decodeResource(resources, R.drawable.app_icon); \r\n\r\nMainActivity.this.setTaskDescription(new ActivityManager.TaskDescription(label, icon, color));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "7",
    "title": "Text Color",
    "about": "Rename textview1 on your widget id and place your HEX color.",
    "code": "textview1.setTextColor(Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "57",
    "title": "TextView - FadeOut",
    "about": "",
    "code": "final AlphaAnimation fadeIn \u003d new AlphaAnimation(0.0f,1.0f);\r\nfinal AlphaAnimation fadeOut \u003d new AlphaAnimation(1.0f,0.0f);\r\n\r\ntext.startAnimation(fadeIn);\r\ntext.startAnimation(fadeOut);\r\nfadeIn.setDuration(1200);\r\nfadeIn.setFillAfter(true);\r\nfadeOut.setDuration(1200);\r\nfadeOut.setFillAfter(true);\r\nfadeOut.setStartOffset(10+fadeIn.getStartOffset());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "58",
    "title": "TextView - Get Clipboard",
    "about": "",
    "code": "ClipboardManager clipboard \u003d (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); String clipboard_text \u003d clipboard.getText().toString();\r\ntextview1.setText(clipboard_text);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "62",
    "title": "TextView - Rotation",
    "about": "",
    "code": "RotateAnimation rotateAnimation \u003d new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setInterpolator(new LinearInterpolator()); rotateAnimation.setDuration(3000); text.startAnimation(rotateAnimation);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "65",
    "title": "TextView - Shadow",
    "about": "",
    "code": "textview1.setShadowLayer(3,1,1, Color.BLACK);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "66",
    "title": "TextView - Typeface",
    "about": "",
    "code": "textview1.setTypeface(Typeface.DEFAULT);\r\ntextview1.setTypeface(Typeface.SANS_SERIF);\r\ntextview1.setTypeface(Typeface.SERIF);\r\ntextview1.setTypeface(Typeface.MONOSPACE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Font",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "67",
    "title": "TextView - Version Name and Code",
    "about": "",
    "code": "//Create variable versionName and versionCode\r\nString versionName \u003d \"null\";\r\nint versionCode \u003d -1;\r\ntry {\r\nandroid.content.pm.PackageInfo packageInfo \u003d MainActivity.this.getPackageManager().getPackageInfo(getPackageName(), 0);\r\nversionName \u003d packageInfo.versionName;\r\nversionCode \u003d packageInfo.versionCode;\r\n} catch (android.content.pm.PackageManager.NameNotFoundException e) {\r\ne.printStackTrace();\r\n}\r\n//textview set text\r\nTextView textViewVersionInfo \u003d (TextView) findViewById(R.id.textview1);\r\ntextViewVersionInfo.setText(String.format(\"Version Name: %s Version Code:%d\", versionName, versionCode));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "68",
    "title": "TextView - Zoom in Animation",
    "about": "",
    "code": "ScaleAnimation scaleAnimation \u003d new ScaleAnimation(1f,4f,1f,4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); \r\nscaleAnimation.setInterpolator(new LinearInterpolator()); \r\nscaleAnimation.setDuration(1800); \r\ntext.startAnimation(scaleAnimation);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "AppCompat": "false",
    "code": "textview.setTextIsSelectable(true);",
    "about": "Makes a TextView selectable",
    "language": "Java",
    "title": "TextView - Set Selectable"
  },
  {
    "id": "69",
    "title": "TextView - Zoom Out Animation",
    "about": "",
    "code": "ScaleAnimation scaleAnimation \u003d new ScaleAnimation(1f,0.5f,1f,.50f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); \r\nscaleAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); \r\nscaleAnimation.setDuration(1800); \r\ntext.startAnimation(scaleAnimation);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "55",
    "title": "TextView Blink",
    "about": "",
    "code": "Animation anim \u003dnew AlphaAnimation(0.0f,1.0f); \r\nanim.setDuration(50);\r\nanim.setStartOffset(20);\r\nanim.setRepeatMode(Animation.REVERSE);\r\nanim.setRepeatCount(Animation.INFINITE);\r\ntext.startAnimation(anim);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "56",
    "title": "TextView FadeIn",
    "about": "",
    "code": "final AlphaAnimation fadeIn \u003d new AlphaAnimation(1.0f,0.0f);\r\nfinal AlphaAnimation fadeOut \u003d new AlphaAnimation(0.0f,1.0f);\r\n\r\ntext.startAnimation(fadeIn);\r\ntext.startAnimation(fadeOut);\r\nfadeIn.setDuration(1200);\r\nfadeIn.setFillAfter(true);\r\nfadeOut.setDuration(1200);\r\nfadeOut.setFillAfter(true);\r\nfadeOut.setStartOffset(10+fadeIn.getStartOffset());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "59",
    "title": "TextView HTML Format",
    "about": "",
    "code": "textview1.setText(Html.fromHtml(\"Your HTML Codes\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "60",
    "title": "TextView Movie Animation",
    "about": "",
    "code": "TranslateAnimation translateAnimation \u003d new TranslateAnimation (Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,.85f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.65f); \r\ntranslateAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); \r\ntranslateAnimation.setDuration(1200); \r\ntext.startAnimation(translateAnimation);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "61",
    "title": "TextView Rotate Anti ClockWise",
    "about": "",
    "code": "RotateAnimation rotateAnimation \u003d new RotateAnimation(360, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); \r\nrotateAnimation.setInterpolator(new AccelerateInterpolator()); \r\nrotateAnimation.setDuration(3000); \r\ntext.startAnimation(rotateAnimation);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "63",
    "title": "TextView Set Color",
    "about": "",
    "code": "textview1.setTextColor(Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "64",
    "title": "TextView Set Color (RGBG)",
    "about": "",
    "code": "textview1.setTextColor(Color.rgb(73,82,178));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "427",
    "title": "TextView Set Text",
    "about": "Changing TextView Widget Text",
    "code": "textview1.setText(\"MyText\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "70",
    "title": "Titanic TextView",
    "about": "",
    "code": "final TitanicTextView mytext \u003d new TitanicTextView(MainActivity.this);\r\nmytext.setText(\"Created By Gabriel\");\r\nmytext.setTextSize((float)100);\r\nmytext.setTextColor(0xFF000000); mytext.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));\r\nlinear1.addView(mytext, 1);\r\n\r\nmytext.setTypeface(Typeface.createFromAsset(getAssets(),\"fonts/atisfyegular.ttf\"), 0);\r\n\r\n\r\n\r\nbutton1.setOnClickListener(new View.OnClickListener() {\r\npublic void onClick(View v) {\r\nnew Titanic().start(mytext);\r\n}\r\n});\r\n\r\n\r\n//Download wave.png on site\r\n//Library can view on Library Menu",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "393",
    "title": "Toast",
    "about": "Toast in sketchware",
    "code": "SketchwareUtil.showMessage(\"msg\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "329",
    "title": "Toast - Bottom",
    "about": "",
    "code": "// Добавляем морблок |Toast| |string:txt|\r\n\r\nToast toast1 \u003d Toast.makeText(this, \"\".concat(_txt), Toast.LENGTH_SHORT);\r\n\r\ntoast1.setGravity(Gravity.BOTTOM,0,0);\r\n\r\ntoast1.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "331",
    "title": "Toast - Bottom \u0026 Right",
    "about": "",
    "code": "// Добавляем морблок |Toast| |string:txt|\r\n\r\nToast toast1 \u003d Toast.makeText(this, \"\".concat(_txt), Toast.LENGTH_SHORT);\r\n\r\ntoast1.setGravity(Gravity.BOTTOM | Gravity.RIGHT,0,0);\r\n\r\ntoast1.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "328",
    "title": "Toast - Center",
    "about": "",
    "code": "// Добавляем морблок |Toast| |string:txt|\r\n\r\nToast toast1 \u003d Toast.makeText(this, \"\".concat(_txt), Toast.LENGTH_SHORT);\r\n\r\ntoast1.setGravity(Gravity.CENTER,0,0);\r\n\r\ntoast1.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "330",
    "title": "Toast - Left",
    "about": "",
    "code": "// Добавляем морблок |Toast| |string:txt|\r\n\r\nToast toast1 \u003d Toast.makeText(this, \"\".concat(_txt), Toast.LENGTH_SHORT);\r\n\r\ntoast1.setGravity(Gravity.LEFT,0,0);\r\n\r\ntoast1.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "326",
    "title": "Toast - Long Click",
    "about": "",
    "code": "button_id.setOnLongClickListener(new View.OnLongClickListener() {\r\n\r\n@Override public boolean onLongClick(View v) {\r\n\r\nToast.makeText(getApplicationContext(),\"Долгий Клик\",Toast.LENGTH_LONG).show();\r\n\r\nreturn false;\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "327",
    "title": "Toast - Top",
    "about": "",
    "code": "// Добавляем морблок |Toast| |string:txt|\r\n\r\nToast toast1 \u003d Toast.makeText(this, \"\".concat(_txt), Toast.LENGTH_SHORT);\r\n\r\ntoast1.setGravity(Gravity.TOP,0,0);\r\n\r\ntoast1.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "332",
    "title": "Toast - TOP \u0026 LEFT",
    "about": "",
    "code": "// Добавляем морблок |Toast| |string:txt|\r\n\r\nToast toast1 \u003d Toast.makeText(this, \"\".concat(_txt), Toast.LENGTH_SHORT);\r\n\r\ntoast1.setGravity(Gravity.TOP | Gravity.LEFT,0,0);\r\n\r\ntoast1.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "392",
    "title": "Toast (Sketchware)",
    "about": "",
    "code": "// SKETCHWARE\n\nshowMessage(\"message\");\n\n// AIDE | ANDROID STUDIO\n\nvoid showMessage(String s) {\nToast.makeText(this, s, Toast.LENGHT_SHORT).show();\n}\n\n\nshowMessage(\"here message\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "394",
    "title": "Toast v2",
    "about": "Toast in sketchware",
    "code": "showMessage(\"msg\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "217",
    "title": "Toasty Tutorial",
    "about": "",
    "code": "Installed Sketchware:\r\n- Upload Image\r\n- Add toast_layout.xml\r\n- Add toast_icon (ImageView) on linear make sure 24x24\r\n  and set default.png as default image\r\n- Add toast_text (TextView) on linear\r\n\r\n\r\nHow To Use?\r\n# Error Type:\r\nToasty.error(MainActivity.this, \"This is an error toast.\", Toast.LENGTH_SHORT, true).show();\r\n\r\n# Success Type:\r\nToasty.success(MainActivity.this, \"Success!\", Toast.LENGTH_SHORT, true).show();\r\n\r\n# Info Type:\r\nToasty.info(MainActivity.this, \"Here is some info for you.\", Toast.LENGTH_SHORT, true).show();\r\n\r\n# Warning Type:\r\nToasty.warning(MainActivity.this, \"Beware of the dog.\", Toast.LENGTH_SHORT, true).show();\r\n\r\n# Normal Withouth Icon:\r\nToasty.normal(MainActivity.this, \"Normal toast w/o icon\").show();\r\n\r\n# Normal With Icon:\r\nandroid.graphics.drawable.Drawable icon \u003d getResources().getDrawable(R.drawable.ic_pets_white_48dp);\r\nToasty.normal(MainActivity.this, \"Normal toast w/ icon\", icon).show();\r\n\r\n# Format Type:\r\nToasty.info(MainActivity.this, getFormattedMessage()).show();\r\n\r\n# This Format:\r\nprivate CharSequence getFormattedMessage() {\r\n        final String prefix \u003d \"Formatted \";\r\n        final String highlight \u003d \"bold italic\";\r\n        final String suffix \u003d \" text\";\r\n        android.text.SpannableStringBuilder ssb \u003d new android.text.SpannableStringBuilder(prefix).append(highlight).append(suffix);\r\n        int prefixLen \u003d prefix.length();\r\n        ssb.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD_ITALIC),\r\n                prefixLen, prefixLen + highlight.length(), android.text.Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);\r\n        return ssb;\r\n    }\r\n\r\n\r\n# Custome Config\r\nToasty.Config.getInstance()\r\n .setTextColor(Color.GREEN)\r\n .setToastTypeface(Typeface.createFromAsset(getAssets(), \"fonts/terminal.ttf\"))\r\n .apply();\r\n\r\nToasty.custom(MainActivity.this, \"Converted By Gabriel\", getResources().getDrawable(R.drawable.laptop512), Color.BLACK, Toast.LENGTH_SHORT, true, true).show();\r\nToasty.Config.reset();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "216",
    "title": "Toasty with Custome",
    "about": "",
    "code": "LayoutInflater i \u003d getLayoutInflater();\r\nView v \u003d i.inflate(R.layout.toast,\r\n(ViewGroup) findViewById(R.id.toastlinear1)\r\n);\r\nToast t \u003d Toast.makeText(getApplicationContext(),\"\",Toast.LENGTH_SHORT);\r\nt.setView(v);\r\nt.show();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "51",
    "title": "Toggle Button",
    "about": "",
    "code": "ToggleButton tb \u003d new ToggleButton(this); tb.setId(1); linear1.addView(tb);\r\nfinal ToggleButton tbc \u003d (ToggleButton)findViewById(1);\r\ntb.setOnClickListener(new View.OnClickListener(){ \r\npublic void onClick(View v){ \r\nif (tbc.isChecked()) { \r\ntextview1.setText(\"ON\"); \r\n} else {\r\ntextview1.setText(\"OFF\"); \r\n} }});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "368",
    "title": "Toggle Button - onClick",
    "about": "about in comments",
    "code": "tb.setOnClickListener(new View.OnClickListener() {\r\n\r\npublic void onClick(View v) {\r\n\r\nif (tbc.isChecked()) {\r\n\r\nshowMessage(\"On\");\r\n// If togglebutton on\r\n\r\n} else {\r\n\r\nshowMessage(\"Off\");\r\n// If togglebutton off\r\n\r\n} }});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "312",
    "title": "ToolBar - Custom Home Icon",
    "about": "",
    "code": "getSupportActionBar().setHomeAsUpIndicator(R.drawable.home_res);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "314",
    "title": "ToolBar - Hide HomeButton Indicator",
    "about": "",
    "code": "getSupportActionBar().setDisplayHomeAsUpEnabled(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "315",
    "title": "ToolBar - Home ClickListener",
    "about": "",
    "code": "_toolbar.setNavigationOnClickListener(new View.OnClickListener() {\r\n\r\n@Override\r\npublic void onClick(View v) {\r\n\r\nshowMessage(\"Кнопка home кликнута\");\r\n\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,List",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "313",
    "title": "ToolBar - Show HomeButton Indicator",
    "about": "",
    "code": "getSupportActionBar().setDisplayHomeAsUpEnabled(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "429",
    "title": "Toolbar / ActionBar - Option Menu (MenuItems with Icons)",
    "about": "Toolbar / ActionBar - Option Menu (MenuItems with Icons)",
    "code": "/* Code in end */\n}\n@Override\npublic boolean onCreateOptionsMenu(Menu menu){\n\nmenu.add(\"search\").setIcon(R.drawable.ic1).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);\n\nmenu.add(\"about\").setIcon(R.drawable.ic2).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);\n\nreturn true;\n}\n\n@Override\npublic boolean onOptionsItemSelected(final MenuItem item) {\nswitch (item.getTitle().toString()) {\ncase \"search\":\n_search();\nreturn true;\ncase \"about\":\n_about();\nreturn true;\ndefault:\nreturn super.onOptionsItemSelected(item);\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "481",
    "title": "Tooltip",
    "about": "A small descriptive message that appears near a view when users long press the view or hover their mouse over it. Similar to a toast.",
    "code": "_fab.setTooltipText(\"Send an email\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,UI",
    "source": "TheRandomCrafter83",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "146",
    "title": "Transfer to background",
    "about": "",
    "code": "moveTaskToBack(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "432",
    "title": "Transition View in Layout",
    "about": "",
    "code": "android.transition.Transition t\u003dnew android.transition.TransitionSet().\n\t\t\t\taddTransition(new android.transition.ChangeBounds()).\n\t\t\t\taddTransition(new android.transition.Fade()).;\n\t\t\t\tandroid.transition.TransitionManager.beginDelayedTransition(linear1,t);\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "437",
    "title": "Transition View in Layout (Fixed)",
    "about": "",
    "code": "android.transition.Transition t\u003dnew android.transition.TransitionSet().\naddTransition(new android.transition.ChangeBounds()).\naddTransition(new android.transition.Fade());\tandroid.transition.TransitionManager.beginDelayedTransition(linear1,t);\n",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "449",
    "title": "Translucent StatusBar",
    "about": "Translucent StatusBar",
    "code": "Window w \u003d this.getWindow();w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); w.setStatusBarColor(Color.parseColor(\"#000000\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "220",
    "title": "Typeface - MONOSPACE",
    "about": "",
    "code": "TextView.setTypeface(Typeface.MONOSPACE);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Font",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "221",
    "title": "Typeface - Sans-Serif",
    "about": "",
    "code": "TextView.setTypeface(Typeface.SANS_SERIF);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Font",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "219",
    "title": "Typeface - SERIF",
    "about": "",
    "code": "TextView.setTypeface(Typeface.SERIF);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Font",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "418",
    "title": "Typewriter / Text one by one effect",
    "about": "Put code in onCreate (end of script)",
    "code": "//Put In Oncreate (in end of all script)\n\n}\n\npublic class Typewriter extends TextView {\n\n    private CharSequence mText;\n    private int mIndex;\n    private long mDelay \u003d 500; //Default 500ms delay\n\n\n    public Typewriter(Context context) {\n        super(context);\n    }\n\n    public Typewriter(Context context, AttributeSet attrs) {\n        super(context, attrs);\n    }\n\n    private Handler mHandler \u003d new Handler();\n    private Runnable characterAdder \u003d new Runnable() {\n        @Override\n        public void run() {\n            setText(mText.subSequence(0, mIndex++));\n            if(mIndex \u003c\u003d mText.length()) {\n                mHandler.postDelayed(characterAdder, mDelay);\n            }\n        }\n    };\n\n    public void animateText(CharSequence text) {\n        mText \u003d text;\n        mIndex \u003d 0;\n\n        setText(\"\");\n        mHandler.removeCallbacks(characterAdder);\n        mHandler.postDelayed(characterAdder, mDelay);\n    }\n\n    public void setCharacterDelay(long millis) {\n        mDelay \u003d millis;\n    }\n}\n\n{\n\n//Put In Button or Oncreate\n\nTypewriter tv \u003d new Typewriter(MainActivity.this);\n    //Add a character every 150ms\n    tv.setCharacterDelay(200);\n    tv.animateText(\"Developer Partha\");\n    tv.setTextSize(20);\nlinear1.addView(tv);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "377",
    "title": "Upload file to server",
    "about": "Add add source directly and paste this code. upload.php Example:\r\n\u003c?php\r\n if (isset($_FILES[\"uploaded_file\"][\"name\"])) {\r\n\r\n$name \u003d $_FILES[\"uploaded_file\"][\"name\"];\r\n$tmp_name \u003d $_FILES[\u0027uploaded_file\u0027][\u0027tmp_name\u0027];\r\n$error \u003d $_FILES[\u0027uploaded_file\u0027][\u0027error\u0027];\r\n\r\nif (!empty($name)) {\r\n    $location \u003d \u0027./\u0027;\r\n\r\n if ( ! is_dir($location)) {\r\n mkdir($location);\r\n }\r\n    $name \u003d rand(0, 100000000).\".png\";\r\n    if  (move_uploaded_file($tmp_name, $location.$name)){\r\n        echo $name;\r\n    }\r\n\r\n} else {\r\n    echo \u00271\u0027;\r\n}\r\n}\r\n ?\u003e\r\n\r\n----------------\r\n\r\nChange url \"http://site.com/upload.php\" on your url.\r\nThe code is made by the developers of Sketchcode and everything works for them.",
    "code": "public String uploadFile(String imagePath) throws IOException\r\n {\r\nStrictMode.ThreadPolicy policy \u003d new StrictMode.ThreadPolicy.Builder().permitAll().build();\r\n        StrictMode.setThreadPolicy(policy);\r\n  BufferedReader br \u003d null;\r\n\r\n  String fileName \u003d imagePath;\r\n  HttpURLConnection conn \u003d null;\r\n  DataOutputStream dos \u003d null;  \r\n  String lineEnd \u003d \"\r\n\";\r\n  String twoHyphens \u003d \"--\";\r\n  String boundary \u003d \"*****\";\r\n  int bytesRead, bytesAvailable, bufferSize;\r\n  byte[] buffer;\r\n  int maxBufferSize \u003d 1 * 1024 * 1024; \r\n  File sourceFile \u003d new File(imagePath); \r\n\r\n  if (!sourceFile.isFile())\r\n  {\r\n\r\n\r\n\r\n            System.out.println(\"uploadFile: Source File not exist :\" + imagePath);\r\n\r\n\r\n  }\r\n  else\r\n  {\r\n            try\r\n   { \r\n\r\n\r\n                FileInputStream fileInputStream \u003d new FileInputStream(sourceFile);\r\n                URL url \u003d new URL(\"http://site.com/upload.php\");\r\n\r\n\r\n                conn \u003d (HttpURLConnection) url.openConnection(); \r\n                conn.setDoInput(true); \r\n                conn.setDoOutput(true); \r\n                conn.setUseCaches(false); \r\n                conn.setRequestMethod(\"POST\");\r\n                conn.setRequestProperty(\"Connection\", \"Keep-Alive\");\r\n                conn.setRequestProperty(\"ENCTYPE\", \"multipart/form-data\");\r\n                conn.setRequestProperty(\"Content-Type\", \"multipart/form-data;boundary\u003d\" + boundary);\r\n                conn.setRequestProperty(\"uploaded_file\", fileName); \r\n\r\n                dos \u003d new DataOutputStream(conn.getOutputStream());\r\n\r\n                dos.writeBytes(twoHyphens + boundary + lineEnd); \r\n                dos.writeBytes(\"Content-Disposition: form-data; name\u003d\"uploaded_file\";filename\u003d\"\"\r\n          + fileName + \"\"\" + lineEnd);\r\n\r\n                dos.writeBytes(lineEnd);\r\n\r\n\r\n                bytesAvailable \u003d fileInputStream.available(); \r\n\r\n                bufferSize \u003d Math.min(bytesAvailable, maxBufferSize);\r\n                buffer \u003d new byte[bufferSize];\r\n\r\n\r\n\r\n                bytesRead \u003d fileInputStream.read(buffer, 0, bufferSize);  \r\n\r\n                while (bytesRead \u003e 0)\r\n    {\r\n\r\n     dos.write(buffer, 0, bufferSize);\r\n     bytesAvailable \u003d fileInputStream.available();\r\n     bufferSize \u003d Math.min(bytesAvailable, maxBufferSize);\r\n     bytesRead \u003d fileInputStream.read(buffer, 0, bufferSize);   \r\n\r\n    }\r\n\r\n\r\n                dos.writeBytes(lineEnd);\r\n                dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);\r\n\r\n\r\n                int serverResponseCode \u003d conn.getResponseCode();\r\n                String serverResponseMessage \u003d conn.getResponseMessage();\r\n\r\n                System.out.println(\"uploadFile : HTTP Response is : \" \r\n           + serverResponseMessage + \": \" + serverResponseCode);\r\n\r\n    if (200 \u003c\u003d conn.getResponseCode() \u0026\u0026 conn.getResponseCode() \u003c\u003d 299)\r\n    {\r\n     br \u003d new BufferedReader(new InputStreamReader(conn.getInputStream()));\r\n    }\r\n    else\r\n    {\r\n     br \u003d new BufferedReader(new InputStreamReader(conn.getErrorStream()));\r\n    }\r\n\r\n\r\n                \r\n                fileInputStream.close();\r\n                dos.flush();\r\n                dos.close();\r\n\r\n   }\r\n   catch (MalformedURLException ex)\r\n   {\r\n\r\n\r\n    ex.printStackTrace();\r\n\r\n    System.out.println(\"Upload file to server: error: \" + ex.getMessage());  \r\n   }\r\n   catch (Exception e)\r\n   {\r\n\r\n\r\n    e.printStackTrace();\r\n\r\n\r\n   }\r\n\r\n\r\n\r\n\r\n  } \r\n  return br.readLine();\r\n }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "342",
    "title": "Variable - double to int",
    "about": "",
    "code": "double d \u003d 3.14;\r\n\r\nint i \u003d (int) d;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "338",
    "title": "Variable - Double to String",
    "about": "",
    "code": "double  i \u003d 32.4e10;\r\n\r\nString str \u003d Double.toString(i);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "337",
    "title": "Variable - Float to String",
    "about": "",
    "code": "float i \u003d 3.46f;\r\n\r\nString str \u003d Float.toString(i);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "334",
    "title": "Variable - Increase by 1",
    "about": "",
    "code": "var++;\r\n\r\n//or\r\n\r\nvar \u003d var +1;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "340",
    "title": "Variable - int to float",
    "about": "",
    "code": "int i \u003d 2015;\r\n\r\nfloat f \u003d (float) (i);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "339",
    "title": "Variable - int to long",
    "about": "",
    "code": "int i \u003d 2015;\r\n\r\nlong l \u003d (long) (i);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "335",
    "title": "Variable - int to String",
    "about": "",
    "code": "int i \u003d 35;\r\n\r\nString str \u003d Integer.toString(i);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "341",
    "title": "Variable - long to int",
    "about": "",
    "code": "long l \u003d 214748364;\r\n\r\nint i \u003d (int) l;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "336",
    "title": "Variable - Long to String",
    "about": "",
    "code": "long i \u003d 3422222;\r\n\r\nString str \u003d Long.toString(i);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "333",
    "title": "Variable - Number variable",
    "about": "",
    "code": "final double var \u003d 0;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "431",
    "title": "Vector/Image Color",
    "about": "insert ImageView, add vector and change your name ID",
    "code": "// Vector Color coded by REEDNIV\nImageView.setImageResource(R.drawable.ic_favorite_grey);\nImageView.setColorFilter(Color.parseColor(\"#E91E63\"));",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "150",
    "title": "Vertical OverScroll",
    "about": "",
    "code": "vscroll1.setVerticalScrollBarEnabled(false);\r\n\r\nvscroll1.setOverScrollMode(ScrollView.OVER_SCROLL_NEVER);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "151",
    "title": "Video HTML5",
    "about": "",
    "code": "getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Video",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "152",
    "title": "Video Player",
    "about": "",
    "code": "final VideoView vd \u003d new VideoView(MainActivity.this);\r\nvd.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.MATCH_PARENT));\r\nlinear1.addView(vd);\r\nvd.setVideoURI(Uri.parse(\"android.resource://\"+getPackageName()+\"/\"+R.raw.vid));\r\n\t\tvd.setMediaController(new MediaController(this));\r\n\t\tvd.requestFocus();\r\nvd.start();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Video",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "496",
    "title": "View - Check if visible or not",
    "about": "There are three different codes, but first one is used usually.",
    "code": "//basic code\r\nif (linear1.getVisibility() \u003d\u003d View.VISIBLE) { \r\n// Its visible \r\n} else { \r\n// Either gone or invisible \r\n}\r\n\r\n//advance\r\nif (linear1.getVisibility() \u003d\u003d View.VISIBLE) {\r\n    // Its visible\r\n} else if(linear1.getVisibility() \u003d\u003d View.INVISIBLE){\r\n    // invisible and taking space\r\n} else if(linear1.getVisibility() \u003d\u003d View.INVISIBLE){\r\n\t// if gone completely\r\n}\r\n\r\n//This is more accurate as it checks if the view is on the displaylist as\r\n// a view could be \"visible\" but have no parent,\r\n// but it wont be accurate in all cases\r\nif(linear1.isShown()){\r\n\t//it is available on main window view\r\n}\r\n//source https://stackoverflow.com/q/3791607/9300428",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "View,Java",
    "source": "Submitted by Pratham",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "369",
    "title": "View - Gradient \u0026 Attributes",
    "about": "",
    "code": "// The following codes marked // ** are optional.\r\n\r\nandroid.graphics.drawable.GradientDrawable gd \u003d new android.graphics.drawable.GradientDrawable ();\r\n\r\nint clr [] \u003d new int [] {\r\n\r\n// Add colors\r\nColor.parseColor (\"# ff0000\"),\r\nColor.parseColor (\"# ffff06\"),\r\nColor.parseColor (\"# dd00ff\"),\r\nColor.parseColor (\"# ddff46\"),\r\nColor.rgb (245,45,30),\r\nColor.rgb (50,220,40)\r\n\r\n};\r\ngd.setColors (clr);\r\n\r\n\r\n// ** Set the radius\r\ngd.setCornerRadius (80);\r\n\r\n\r\n// ** Set orientation\r\ngd.setOrientation (android.graphics.drawable.GradientDrawable.Orientation.BL_TR);\r\n// BOTTOM_TOP, BR_TR, LEFT_RIGHT, RIGHT_LEFT, TL_BR, TOP_BOTTOM, TR_BL\r\n\r\n\r\n// ** Stroke / Barcode\r\ngd.setStroke (8, Color.WHITE);\r\n\r\n\r\n// ** Shape / Shape\r\ngd.setShape (android.graphics.drawable.GradientDrawable.OVAL);\r\n\r\n\r\n// ** Gradient Type\r\ngd.setGradientType (android.graphics.drawable.GradientDrawable.SWEEP_GRADIENT);\r\n// SWEEP_GRADIENT / RADIAL_GRADIENT\r\n\r\n\r\n// ** Gradient radius (works with sweep / radial types)\r\ngd.setGradientRadius (300);\r\n\r\n\r\n\r\n// ** Translucency\r\ngd.setAlpha (0.5);\r\n\r\n\r\n// ** Shift Center (X, Y)\r\ngd.setGradientCenter (30, 70);\r\n\r\n\r\nlinear1.setBackground (gd);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "153",
    "title": "View Pager",
    "about": "",
    "code": "final androidx.viewpager.widget.ViewPager viewPager \u003d new androidx.viewpager.widget.ViewPager(this);\nviewPager.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));\nviewPager.setBackgroundColor(Color.BLACK);\nMyPagerAdapter adapter \u003d new MyPagerAdapter();\nviewPager.setAdapter(adapter);\nviewPager.setCurrentItem(0);\nlinear1.addView(viewPager);\nviewPager.addOnPageChangeListener(new androidx.viewpager.widget.ViewPager.OnPageChangeListener() { public void onPageSelected(int position) { \nView noview \u003d (View) viewPager.findViewWithTag(\"myview\" + viewPager.getCurrentItem());\nif (position \u003d\u003d 1) {\nButton bt \u003d (Button) noview.findViewById(R.id.button1);\nbt.setOnClickListener(new OnClickListener() { public void onClick(View v) {viewPager.setCurrentItem(0);} });\n}\nif (position \u003d\u003d 3) {\nTextView tt \u003d (TextView) noview.findViewById(R.id.textview2);\ntt.setTextIsSelectable(true);\ntt.setText(\"Aan Gabriel\");\n}\n}\n@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }\n@Override public void onPageScrollStateChanged(int state) { }\n});\n}\nprivate class MyPagerAdapter extends androidx.viewpager.widget.PagerAdapter {\npublic int getCount() {\nreturn 4;\n}\npublic Object instantiateItem(View collection, int position) {\nLayoutInflater inflater \u003d (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);\nint resId \u003d 0;\nswitch (position) {\ncase 0:\nresId \u003d R.layout.left;\nbreak;\ncase 1:\nresId \u003d R.layout.farleft;\nbreak;\ncase 2:\nresId \u003d R.layout.middle;\nbreak;\ncase 3:\nresId \u003d R.layout.right;\nbreak;\n}\nView view \u003d inflater.inflate(resId, null);\n((androidx.viewpager.widget.ViewPager)collection).addView(view, 0);\nview.setTag(\"myview\" + position);\nreturn view;\n}\n@Override\npublic void destroyItem(View arg0, int arg1, Object arg2) {\n((androidx.viewpager.widget.ViewPager) arg0).removeView((View) arg2);\n}\n@Override\npublic boolean isViewFromObject(View arg0, Object arg1) {\nreturn arg0 \u003d\u003d ((View) arg1);\n}\n@Override\npublic Parcelable saveState() {\nreturn null;\n}\n\n\n//Note: For example\n// main.xml add linear1\n// custom middle.xml, farleft.xml, left.xml, right.xml\n//middle.xml - linear1(textview1, textview2)\n//farleft.xml - linear1(textview1, textview2, button1)\n//left.xml - linear1(textview1, textview2)\n//right.xml - liner1 and some with left.xml",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,View",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "252",
    "title": "Voice Search",
    "about": "",
    "code": "Intent intent \u003d new Intent(android.speech.RecognizerIntent.ACTION_RECOGNIZE_SPEECH);\r\nintent.putExtra(android.speech.RecognizerIntent.EXTRA_LANGUAGE_MODEL, android.speech.RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);\r\n intent.putExtra(android.speech.RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());\r\n intent.putExtra(android.speech.RecognizerIntent.EXTRA_PROMPT, \"Voice\");\r\n \r\ntry { \r\nstartActivityForResult(intent, REQ_CODE_SPEECH_INPUT); \r\n} catch (ActivityNotFoundException a) { Toast.makeText(getApplicationContext(), \"Activity not found\", Toast.LENGTH_SHORT).show();\r\n} } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { \r\ncase REQ_CODE_SPEECH_INPUT: \r\n{ \r\nif (resultCode \u003d\u003d RESULT_OK \u0026\u0026 null !\u003d data) { ArrayList\u003cString\u003e result \u003d data .getStringArrayListExtra(android.speech.RecognizerIntent.EXTRA_RESULTS);\r\n \r\nedittext1.setText(result.get(0));\r\n } break; } }",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "154",
    "title": "Volume Control",
    "about": "",
    "code": "//add seekbar set progress to 12\r\n\r\naudioManager \u003d (AudioManager) getSystemService(Context.AUDIO_SERVICE); seekbar1.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));\r\n\r\n}\r\n\r\nAudioManager audioManager;\r\n\r\nprivate void nothing() {\r\n\r\n//OnSeekBar Changed add:\r\n\r\ntextview1.setText(\"Music Volume : \" + _progressValue);\r\n\r\naudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, _progressValue, 0);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "155",
    "title": "VScroll Settings",
    "about": "",
    "code": "vscroll1.setHorizontalScrollBarEnabled(false);\r\nvscroll1.setVerticalScrollBarEnabled(false);\r\nvscroll1.setOverScrollMode(ScrollView.OVER_SCROLL_NEVER);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "460",
    "title": "Wallpaper",
    "about": "Wallpaper",
    "code": "WallpaperManager myWallpaperManager \u003d WallpaperManager.getInstance(getApplicationContext());\r\ntry {\r\nBitmap bitmap \u003d ((android.graphics.drawable.BitmapDrawable) imageview1.getDrawable()).getBitmap(); myWallpaperManager.setBitmap(bitmap);\r\n} catch (Exception g) {\r\ng.printStackTrace();\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "490",
    "title": "Webview - allow camera and microphone",
    "about": "Enable camera and microphone permissions in webview. They will always be allowed with this code.",
    "code": "webView.setWebChromeClient(new WebChromeClient(){\r\n    @Override\r\n    public void onPermissionRequest(PermissionRequest request){\r\n        // Generally you want to check which permissions you are granting\r\n        request.grant(request.getResources());\r\n    }\r\n})",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet,Widget",
    "source": "Submitted by Robert9157 from https://stackoverflow.com/a/46385520",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "38",
    "title": "WebView - Cookie",
    "about": "",
    "code": "CookieManager.getInstance().setAcceptCookie(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "23",
    "title": "WebView - Download AsyncTask",
    "about": "",
    "code": "webview1.setDownloadListener(new DownloadListener() {\r\npublic void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {\r\nFileName \u003d URLUtil.guessFileName(url, contentDisposition, mimetype);\r\nnew DownloadFile().execute(Uri.parse(url).toString());\r\n}});\r\n\r\n\r\n\r\n}\r\nprivate ProgressDialog mProgressDialog;\r\nprivate java.io.File PathDir \u003d Environment.getExternalStorageDirectory();\r\nprivate String PathName \u003d \"Downloads_File\";\r\nprivate String FileName \u003d \"\";\r\nprivate class DownloadFile extends AsyncTask\u003cString, Integer, String\u003e {\r\n@Override\r\nprotected void onPreExecute() {\r\nsuper.onPreExecute();\r\ncheckAndCreateDirectory(PathName);\r\nmProgressDialog \u003d new ProgressDialog(MainActivity.this);\r\nmProgressDialog.setTitle(FileName);\r\nmProgressDialog.setMessage(\"Downloading \" + FileName + \". Please wait...\");\r\nmProgressDialog.setIndeterminate(false);\r\nmProgressDialog.setMax(100);\r\nmProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);\r\nmProgressDialog.show();\r\n}\r\n@Override\r\nprotected String doInBackground(String... Url) {\r\ntry {\r\njava.net.URL url \u003d new java.net.URL(Url[0]);\r\njava.net.URLConnection connection \u003d url.openConnection();\r\nconnection.connect();\r\nint fileLength \u003d connection.getContentLength();\r\n//String filepath \u003d Environment.getExternalStorageDirectory().getPath();\r\njava.io.InputStream input \u003d new java.io.BufferedInputStream(url.openStream());\r\njava.io.OutputStream output \u003d new java.io.FileOutputStream(PathDir + \"/\" + PathName + \"/\" + FileName);\r\nbyte data[] \u003d new byte[1024];\r\nlong total \u003d 0;\r\nint count;\r\nwhile ((count \u003d input.read(data)) !\u003d -1) {\r\ntotal +\u003d count;\r\npublishProgress((int) (total * 100 / fileLength));\r\noutput.write(data, 0, count);\r\n}\r\noutput.flush();\r\noutput.close();\r\ninput.close();\r\n} catch (Exception e) {\r\nshowMessage(e.getMessage().toString());\r\ne.printStackTrace();\r\n}\r\nreturn null;\r\n}\r\n@Override\r\nprotected void onProgressUpdate(Integer... progress) {\r\nsuper.onProgressUpdate(progress);\r\nmProgressDialog.setProgress(progress[0]);\r\n}\r\n@Override\r\nprotected void onPostExecute(String unused) {\r\nmProgressDialog.dismiss();\r\nshowMessage(\"Download Complite\");\r\n}\r\n}\r\npublic void checkAndCreateDirectory(String PathName){\r\njava.io.File new_dir \u003d new java.io.File(PathDir + \"/\" + PathName);\r\nif (!new_dir.exists()){\r\nnew_dir.mkdirs();\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "24",
    "title": "WebView - Download External",
    "about": "",
    "code": "webview1.setDownloadListener(new DownloadListener() {     public void onDownloadStart(String url, String userAgent,                 String contentDisposition, String mimetype,                 long contentLength) {         Intent i \u003d new Intent(Intent.ACTION_VIEW);         i.setData(Uri.parse(url));         startActivity(i);     } });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "25",
    "title": "WebView - Download Internal",
    "about": "",
    "code": "webview1.setDownloadListener(new DownloadListener() {\r\npublic void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {\r\nDownloadManager.Request request \u003d new DownloadManager.Request(Uri.parse(url));\r\nString cookies \u003d CookieManager.getInstance().getCookie(url);\r\nrequest.addRequestHeader(\"cookie\", cookies);\r\nrequest.addRequestHeader(\"User-Agent\", userAgent);\r\nrequest.setDescription(\"Downloading file...\");\r\nrequest.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype));\r\nrequest.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype));\r\n\r\nDownloadManager manager \u003d (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);\r\nmanager.enqueue(request);\r\nshowMessage(\"Downloading File....\");\r\n//Notif if success\r\nBroadcastReceiver onComplete \u003d new BroadcastReceiver() {\r\npublic void onReceive(Context ctxt, Intent intent) {\r\nshowMessage(\"Download Complete!\");\r\nunregisterReceiver(this);\r\n}};\r\nregisterReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));\r\n}\r\n});\r\n\r\nAdd permission:\r\n\u003cuses-permission android:name\u003d\"android.permission.WRITE_EXTERNAL_STORAGE\" /\u003e",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "28",
    "title": "WebView - Favicon",
    "about": "Replace \"imageview1\" on your widget id.",
    "code": "imageview1.setImageBitmap(webview1.getFavicon());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "26",
    "title": "WebView - Find OnPage",
    "about": "",
    "code": "edittext1.setSingleLine(true); \r\nedittext1.setOnKeyListener(new OnKeyListener() {\r\n\r\npublic boolean onKey(View v, int keyCode, KeyEvent event) {\r\nif ((event.getAction() \u003d\u003d KeyEvent.ACTION_DOWN) \u0026\u0026 ((keyCode \u003d\u003d KeyEvent.KEYCODE_ENTER))) {\r\n\r\nwebview1.findAll(edittext1.getText().toString());\r\ntry {\r\nfor (java.lang.reflect.Method m : WebView.class.getDeclaredMethods()) {\r\nif (m.getName().equals(\"setFindIsUp\")) {\r\nm.setAccessible(true);\r\nm.invoke(webview1, true);\r\nbreak;\r\n}\r\n}\r\n} catch (Exception ignored) {\r\n} finally {\r\nandroid.view.inputmethod.InputMethodManager inputManager \u003d (android.view.inputmethod.InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);\r\nView vv \u003d getCurrentFocus();\r\nif (vv !\u003d null) {\r\ninputManager.hideSoftInputFromWindow(v.getWindowToken(), android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS);\r\n}\r\n}\r\n}\r\nreturn false;\r\n}\r\n});\r\n\r\n//Add Button For Next Add this on button Listener\r\nwebview1.findNext(true);\r\n\r\n//Add Button Close Search add this again\r\nwebview1.clearMatches();",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "27",
    "title": "WebView - FingerZoom",
    "about": "",
    "code": "webview1.getSettings().setBuiltInZoomControls(true);webview1.getSettings().setDisplayZoomControls(false);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "29",
    "title": "WebView - Get Title",
    "about": "",
    "code": "textview1.setText(webview1.getTitle());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "30",
    "title": "WebView - HitTestResult",
    "about": "",
    "code": "unregisterForContextMenu(viewwebsite);\r\nWebView.HitTestResult result \u003d viewwebsite.getHitTestResult(); \r\nif (result.getType() \u003d\u003d WebView.HitTestResult.SRC_ANCHOR_TYPE) { \r\nregisterForContextMenu(viewwebsite); \r\n}\r\nelse \r\n{ \r\nreturn true;\r\n} \r\nreturn true;",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "31",
    "title": "WebView - HTML Support",
    "about": "",
    "code": "WebSettings webSettings \u003d webview1.getSettings(); \r\nwebSettings.setJavaScriptEnabled(true); \r\nwebSettings.setJavaScriptCanOpenWindowsAutomatically(true);\r\nif (android.os.Build.VERSION.SDK_INT \u003e\u003d android.os.Build.VERSION_CODES.JELLY_BEAN) {\r\nwebSettings.setAllowFileAccessFromFileURLs(true); \r\nwebSettings.setAllowUniversalAccessFromFileURLs(true);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "32",
    "title": "WebView - Install Apk",
    "about": "",
    "code": "String destination \u003d Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + \"/\";\r\nString fileName \u003d \"AppName.apk\";\r\ndestination +\u003d fileName;\r\nfinal Uri uri \u003d Uri.parse(\"file://\" + destination);\r\njava.io.File file \u003d new java.io.File(destination);\r\nif (file.exists()) file.delete();\r\nString url \u003d \"URL Apk..\";\r\nDownloadManager.Request request \u003d new DownloadManager.Request(Uri.parse(url));\r\nrequest.setDescription(\"Updating..\");\r\nrequest.setTitle(\"Download\");\r\nrequest.setDestinationUri(uri);\r\nfinal DownloadManager manager \u003d (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);\r\nfinal long downloadId \u003d manager.enqueue(request);\r\n\r\nBroadcastReceiver onComplete \u003d new BroadcastReceiver() {\r\npublic void onReceive(Context ctxt, Intent intent) {\r\nIntent install \u003d new Intent(Intent.ACTION_VIEW); \r\ninstall.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); \r\ninstall.setDataAndType(uri, manager.getMimeTypeForDownloadedFile(downloadId)); \r\nstartActivity(install);\r\nunregisterReceiver(this);\r\nfinish();\r\n}};\r\nregisterReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));\r\n\r\n\r\n//Or Using Intent Only\r\n\r\nIntent intent \u003d new Intent(Intent.ACTION_VIEW);\r\nintent.setDataAndType(Uri.fromFile(new java.io.File(Environment.getExternalStorageDirectory() + \"/download/\" + \"app.apk\")), \"application/vnd.android.package-archive\");\r\nintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r\nstartActivity(intent);\r\n\r\n\r\n//Use permission\r\n\u003cuses-permission android:name\u003d\"android.permission.WRITE_EXTERNAL_STORAGE\" /\u003e",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "33",
    "title": "WebView - Load Image",
    "about": "",
    "code": "new DownloadImageTask(imageview1).execute(\"http://cyberghostnet.ga/images/logo/1494923529_409.gif\");\r\n}\r\n\r\nprivate class DownloadImageTask extends AsyncTask\u003cString, Void, Bitmap\u003e {\r\nImageView bmImage; \r\npublic DownloadImageTask(ImageView bmImage) { \r\nthis.bmImage \u003d bmImage;\r\n}\r\nprotected Bitmap doInBackground(String urls) { \r\nString urldisplay \u003d urls[0]; \r\nBitmap mIcon11 \u003d null;\r\ntry { \r\njava.io.InputStream in \u003d new java.net.URL(urldisplay).openStream(); \r\nmIcon11 \u003d BitmapFactory.decodeStream(in);\r\n}\r\ncatch (Exception e) { \r\nLog.e(\"Error\", e.getMessage()); e.printStackTrace();\r\n}\r\nreturn mIcon11;\r\n} \r\nprotected void onPostExecute(Bitmap result) {\r\nimageview1.setImageBitmap(result);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "488",
    "title": "Webview - LocalStorage",
    "about": "Enable LocalStorage in WebView.",
    "code": "webview.getSettings().setDomStorageEnabled(true);\r\nwebview.getSettings().setDatabaseEnabled(true);\r\nif (Build.VERSION.SDK_INT \u003c Build.VERSION_CODES.KITKAT) {\r\n    webView.getSettings().setDatabasePath(\"/data/data/\" + webView.getContext().getPackageName() + \"/databases/\");\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "Submitted by Robert9157",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "489",
    "title": "Webview - Location access",
    "about": "Enable location access in webview. It will be always allowed with this code sample.",
    "code": "// LOCATION PERMISSION REQUIRED. To add it,\r\n// you can encase LocationManger GPS_PROVIDER and NETWORK PROVIDER blocks like this to add it:\r\n// /* (blocks) */\r\n\r\nwebview1.setJavaScriptEnabled(true);\r\nwebview1.setGeolocationEnabled(true);\r\nwebview1.setJavaScriptCanOpenWindowsAutomatically(true);\r\n\r\n// add the webChromeClient\r\nwebview1.setWebChromeClient(new WebChromeClient() {\r\n public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {\r\n    callback.invoke(origin, true, false);\r\n }\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet,Widget",
    "source": "Submitted by Robert9157 from https://stackoverflow.com/a/5423026",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "34",
    "title": "WebView - Mobile",
    "about": "",
    "code": "webview1.getSettings().setLoadWithOverviewMode(true); webview1.getSettings().setUseWideViewPort(true); final WebSettings webSettings \u003d webview1.getSettings(); final String newUserAgent; newUserAgent \u003d \"Mozilla/5.0 (Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36\"; webSettings.setUserAgentString(newUserAgent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "35",
    "title": "WebView - ProgressBar",
    "about": "",
    "code": "final android.widget.ProgressBar prog \u003d new android.widget.ProgressBar(this,null, android.R.attr.progressBarStyleHorizontal);\r\nprog.setPadding(0,0,0,0);\r\nprog.setIndeterminate(false);\r\nprog.setFitsSystemWindows(true);\r\nprog.setProgress(0);\r\nprog.setScrollBarStyle(android.widget.ProgressBar.SCROLLBARS_OUTSIDE_INSET);\r\nprog.setMax(100);\r\nViewGroup.LayoutParams vlp \u003d new ViewGroup.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);\r\nprog.setLayoutParams(vlp);\r\npl.addView(prog);\r\nwebview1.setWebChromeClient(new WebChromeClient() {\r\n@Override public void onProgressChanged(WebView view, int newProgress) {\r\nprog.setProgress(newProgress);\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "36",
    "title": "WebView - Save form data",
    "about": "Replace \"webview\" on your id...",
    "code": "webview.getSettings().setSaveFormData(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "37",
    "title": "WebView - Save Password",
    "about": "",
    "code": "webview.getSettings().setSavePassword(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "39",
    "title": "WebView - Set JavaScript",
    "about": "",
    "code": "webview1.getSettings().setJavaScriptEnabled(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "40",
    "title": "WebView - Speedy",
    "about": "",
    "code": "webview1.getSettings().setAppCacheMaxSize(5*1024*1024); \r\nwebview1.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath()); \r\nwebview1.getSettings().setAllowFileAccess(true);\r\nwebview1.getSettings().setAppCacheEnabled(true);\r\nwebview1.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);\r\nwebview1.getSettings().setLoadWithOverviewMode(true);\r\nwebview1.getSettings().setUseWideViewPort(true);\r\nwebview1.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);\r\nwebview1.getSettings().setDomStorageEnabled(true);\r\nwebview1.getSettings().setSaveFormData(true);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "41",
    "title": "WebView - Support Upload",
    "about": "",
    "code": "webview1.setWebChromeClient(new WebChromeClient() {\r\n@Override\r\npublic boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {\r\n\r\nmFilePathCallback \u003d filePathCallback; \r\nIntent intent \u003d new Intent(Intent.ACTION_GET_CONTENT); \r\nintent.setType(\"*/*\"); \r\nstartActivityForResult(intent, PICKFILE_REQUEST_CODE); return true;\r\n}\r\n});\r\n\r\n//add Bkock webview loadUrl\r\n\r\n\r\n}\r\nprivate ValueCallback \u003cUri[]\u003e mFilePathCallback;\r\nprivate static final int PICKFILE_REQUEST_CODE \u003d 0; \r\n@Override\r\nprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {\r\nif (requestCode \u003d\u003d PICKFILE_REQUEST_CODE) {\r\nUri result \u003d intent \u003d\u003d null || resultCode !\u003d RESULT_OK ? null : intent.getData();\r\nUri[] resultsArray \u003d new Uri[1]; \r\nresultsArray[0] \u003d result; \r\nmFilePathCallback.onReceiveValue(resultsArray);\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "42",
    "title": "WebView - Swift Refresh",
    "about": "",
    "code": "final androidx.swiperefreshlayout.widget sr \u003d new androidx.swiperefreshlayout.widget(this);\nsr.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.MATCH_PARENT));\nlinear1.addView(sr);\nfinal WebView wb \u003d new WebView(this);\nwb.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.MATCH_PARENT));\nwb.getSettings().setJavaScriptEnabled(true);\nsr.addView(wb);\nwb.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { sr.setRefreshing(false);\n}}); \nwb.loadUrl(\"http://sketchware.io\");\nsr.setOnRefreshListener( new androidx.swiperefreshlayout.widget.OnRefreshListener() { @Override public void onRefresh() { wb.reload(); } } );\n\n// add firebase and widget anyting from firebase\n\n\n//Or you can use this mode edited\n\n\nfinal androidx.swiperefreshlayout.widget sr \u003d new androidx.swiperefreshlayout.widget(this);\nsr.setLayoutParams(new LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.MATCH_PARENT));\nlinear1.addView(sr);\nfinal WebView wb \u003d (WebView)findViewById(R.id.webview1);\nwb.getSettings().setJavaScriptEnabled(true);\nlinear1.removeView(wb);\nlinear1.post(new Runnable() { @Override public void run() { sr.addView(wb); } });\nwb.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { sr.setRefreshing(false);\n}});\nwb.loadUrl(\"http://www.google.com\");\nsr.setOnRefreshListener( new androidx.swiperefreshlayout.widget.OnRefreshListener() { @Override public void onRefresh() { wb.reload(); } } );",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "43",
    "title": "WebView - Title protect access",
    "about": "",
    "code": "if(webview1.getTitle().equals(\"Aan Gabriel\")){\r\n//Your Code\r\n}",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "44",
    "title": "WebView - Touch to copy",
    "about": "",
    "code": "webview1.setOnTouchListener(new View.OnTouchListener() {\r\nBoolean tF;\r\n@Override public boolean onTouch(View v, MotionEvent event) {\r\nshowMessage(\"Aan\");\r\ntF \u003d true;\r\nswitch (event.getAction()) {\r\ncase MotionEvent.ACTION_DOWN: tF \u003d false;\r\nshowMessage(\"0\");\r\n}\r\nreturn tF;\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "19",
    "title": "WebView Certificate",
    "about": "Replace \"textview1\" and \"webview1\" on your name of widget.",
    "code": "textview1.setText(webview1.getCertificate().toString());",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "20",
    "title": "WebView Connection Test",
    "about": "",
    "code": "android.net.ConnectivityManager cm \u003d (android.net.ConnectivityManager) this.getSystemService(android.content.Context.CONNECTIVITY_SERVICE);\r\n\r\nandroid.net.NetworkInfo activeNetwork \u003d cm.getActiveNetworkInfo();\r\n\r\nif (activeNetwork !\u003d null) {\r\nif (activeNetwork.getType() \u003d\u003d android.net.ConnectivityManager.TYPE_WIFI) {\r\ntext.setText(\"Wifi is active\");\r\n} else if (activeNetwork.getType() \u003d\u003d android.net.ConnectivityManager.TYPE_MOBILE) {\r\ntext.setText(\"mobile is active\");\r\n}\r\n} else {\r\ntext.setText(\"No connection\");\r\n}\r\n\r\n\r\n\r\n//Need permission\r\n\u003cuses-permission android:name\u003d\"android.permission.ACCESS_NETWORK_STATE\" /\u003e",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "21",
    "title": "WebView Deskop",
    "about": "Replace \u0027webview1\u0027 on your id...",
    "code": "webview1.getSettings().setLoadWithOverviewMode(true); webview1.getSettings().setUseWideViewPort(true); final WebSettings webSettings \u003d webview1.getSettings(); final String newUserAgent; newUserAgent \u003d \"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36\"; webSettings.setUserAgentString(newUserAgent);",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "22",
    "title": "WebView Detect Error",
    "about": "",
    "code": "webview1.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView webview1, int errorCode, String description, String failingUrl) { //here you can do something when received error in WebView\r\n\r\nshowMessage(\"Error\"); } });",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "18",
    "title": "WebView Touch to Copy",
    "about": "",
    "code": "webview1.setOnTouchListener(new View.OnTouchListener() {\r\nBoolean tF;\r\n@Override public boolean onTouch(View v, MotionEvent event) {\r\nshowMessage(\"Aan\");\r\ntF \u003d true;\r\nswitch (event.getAction()) {\r\ncase MotionEvent.ACTION_DOWN: tF \u003d false;\r\nshowMessage(\"0\");\r\n}\r\nreturn tF;\r\n}\r\n});",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Widget,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "156",
    "title": "Wifi Enable",
    "about": "",
    "code": "final android.net.wifi.WifiManager wifi \u003d (android.net.wifi.WifiManager)getSystemService(Context.WIFI_SERVICE);\r\n\r\nif (wifi.isWifiEnabled()) {\r\n    wifi.setWifiEnabled(false);\r\n    showMessage(\"Wifi Disable\");\r\n} else {\r\n    wifi.setWifiEnabled(true);\r\n    showMessage(\"Wifi Enable\");\r\n}\r\n\r\n\r\n// add permission\r\n/*\r\n\u003cuses-permission android:name\u003d\"android.permission.ACCESS_WIFI_STATE\" /\u003e\r\n\u003cuses-permission android:name\u003d\"android.permission.CHANGE_WIFI_STATE\" /\u003e\r\n*/",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "242",
    "title": "Wifi Manager",
    "about": "",
    "code": "final android.net.wifi.WifiManager wifi \u003d (android.net.wifi.WifiManager)getSystemService(Context.WIFI_SERVICE);\r\n\r\nif (wifi.isWifiEnabled()) {\r\n\r\nwifi.setWifiEnabled(false);\r\nshowMessage(\"Wi-Fi 쎭펭掭\");\r\n\r\n} else {\r\n\r\nwifi.setWifiEnabled(true);\r\nshowMessage(\"Wi-Fi 쎭펭掭\");\r\n\r\n}\r\n\r\n\r\n// Ď⎭Ꭽ㎭펭掭  Ꭽꎭ掭? ?Ꭽ鎭?掭掭ꎭ:\r\n\r\n\u003cuses-permission android:name\u003d\"android.permission.ACCESS_WIFI_STATE\" /\u003e\r\n\u003cuses-permission android:name\u003d\"android.permission.CHANGE_WIFI_STATE\" /\u003e\r\n*/",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "Java,Internet",
    "source": "",
    "uid": "0",
    "username": "Unknown"
  },
  {
    "id": "243",
    "title": "Display alert message (JavaScript)",
    "about": "",
    "code": "alert(\"YoYo\");",
    "androidv4_supported": "1",
    "androidx_supported": "1",
    "category": "JavaScript,Internet",
    "source": "",
    "uid": "0",
    "username": "NiceSapien"
  }
]
