JAVA is a programming language that is used in many software developments like Android App Development and much more. It is class-based and object-oriented programming whose syntax is influenced by C++. The primary goals of JAVA are to be simple, object-oriented, robust, secure, and high level. JAVA application runs on JVM (JAVA Virtual Machine).
Learn about variables and how they are created for storing information in memory. A variable is a container that holds the value while the java program is executed. In Java, there are 3 types of variables namely Local Variable, Static Variable, Instance Variable.
Data Types
Learn about Data Types (i.e. byte, int, char, etc) which is basically a type of information we want to store in the variable. Weather data is number, Character, or something else like boolean value.
String
The string is nothing but a character array for example “protocoderspoint” is a string of 16 characters as shown.
Keywords
Keywords in JAVA are a predefined list of keywords which has a specific meaning and cannot be used in the Java programming language as an identifier, such as the name of a variable, method, class, function, or label.
Operators
In computer, a programming Operator is a symbol that tells the compiler to perform specific action which can be mathematical or logical like addition, subtraction, multiplication, etc.
Class And Objects
The concept of class comes into the role when we see certain types of objects or things around us and the common idea or a blueprint behind this type of object is called Class. Object is an instance of the class.
Method
A method is a self-defined block of code that performs a specific task.
Picasso android library is – A powerful image loading, image downloading, and image caching library for Android.
This Picasso library allows for hassle-free image loading in your application—often in one line of code!
Picasso dependency is an open-source Android library that is developed and maintained by Square. This library hides all the complexity as it will deal with back-on threading, loading images from the internet, and even caching. Picasso makes memory-efficient to resize and transform images. Picasso Library makes it quite easier for displaying images from remote locations.
Final Output of this Picasso android tutorial.
picasso android image loader
1. Feature of this Universal image loader library
Handling ImageView recycling and download cancelation in an adapter.
Complex image transformations with minimal memory use.
.fetch() –this is an asynchronously load the image into a background thread. This method only saves the image into the disk or memory cache. It’s neither going to load the image into image view nor it is going to return any Bitmap. If you want to reduce the reduce image loading times and if you know that the image is needed by you shortly after then it could be used to fill the image cache in the background.
.get() – It returns a Bitmap object and loads an image synchronously. But it will freeze the UI if you will call it from the UI thread.
into(ImageView targetImageView) – It is provided by Picasso where you can Specify your target Imageview in which the image is supposed to get displayed.
In this tutorial, you will learn How to use Picasso android library to load images from the locally drawable drive and even how to load images from a URL.
How to add Picasso library in android studio Picasso dependency?
Navigate to your project file at the left side of your android studio. You will see “Gradle Scripts” open the drop down list, you will see a build.gradle (Module:app) open it.
adding picasso dependency library
Before using Picasso we have to add its dependency in build.gradle file in module level : app.
Picasso supports both download and error placeholders as optional features.
We can specify an image as a place holder until the image is being loaded, placeholder are commenly used with we face any technical issue like network failed to load the picasso image, in such a case we make use of placeholder in picasso so that we can show a default image in place of real image.We can also give an image as an error handler if any error occurs while loading the image.
Now let us begin by creating a project in android studio to implement Picasso universal image loader library.
Picasso Android Example
In the Example, i m loading an image from local and from URL when button is clicked OK.
Create a project with and of your wish package name i m using “protocoderspoint.com.picassoandroidimageloader” and add following code in respective files
Welcome To Proto Coders Point, In this tutorial, we will learn how to create a profile page UI Design app using Dart and Flutter. A quick sample app on how to create a simple profile screen page in flutter.
Open android Studio and create a new flutter project.
File > New > New Flutter Project
Give a name you your flutter project and set a path to store you flutter project.
Now you will a see a default counter code generated, that simply counts the number of times the button is pressed and display counting on the screeen.
You can just remove default code of flutter and shown in below Image.
flutter profile UI Design
So let’s begin with the actual code for Flutter profile page example UI Design.
before we start implement, we need the resources such as images and fonts to be set/copy in our project directory, For that we need to create 2 directory.
Directory
images : to store all our project image resources.
fonts : to store all our fonts style ttf extension files.
Here is how to create directory in android-studio ( flutter )
Google Flutter is one of a open source user interface(UI) Software Development Toolkit that is been created/ developed by Google, for Software developer which makes programmer to design UI natively compiled applications for mobile, web, and desktop from a single codebase (Google Flutter).
The First version of Flutter Application was named as “SKY”,That was smoothly running on any of the android operating system. Fluttter was released on 2015 by a developer “Summit”. Google announced Flutter Release Preview 2 which is the last big release before Flutter 1.0.
After somedays of testing the final version was released on December 4th of 2018 as flutter 1.0 at it live event, which was he first “stable” version of the Framework.
Which Language Google Flutter prefers to use?
introduction on flutter
Google Flutter are written in the Dart programming language and make use of many of the language’s more advanced features.
Flutter framework for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source. Watch this Video
Widgets in Flutter UI
UI design in Flutter development involves create “Widgets” from other Widgets. Flutter Application is basically a groups of widgets build together to form a beautiful UI/ UX experience.
Flutter widget
A widget is an immutable description of part of a user interface.” A human being will tell you it’s a Blueprint, which is a much easier way to think about it.
The MyApp Widget contains all the other Widgets, which can contain even smaller Widgets, and together they make up your app.
Flutter is very much fast in development, With Statefull Flutter’s hot reload feature helps you quickly and easily experiment, build UIs, add features, and fix bugs within a seconds.
Expressive and Flexiable UI
Quickly ship features with a focus on native end-user experiences. Layered architecture allows for full customization, which results in incredibly fast rendering and expressive and flexible designs.[1]
Native Performation
Flutter’s widgets incorporate all critical platform differences such as scrolling, navigation, icons and fonts to provide full native performance on both iOS and Android. Here are some examples of application that are build using flutter
How to install flutter plugin in android studio?
Here i have demonstrated installation process in ubuntu android-studio same applied to Windows OS.
A dnd dice roller app using android-studio. who want to learn and gain more knowledge in developing an android application.
This tutorial is not be a fancy 3D dice roller but it’ll be a simple dice that roller with some animation effect and generate a random number from 1 – 6 and show similar image of dice roller to the user.
The main moto of this android tutorial is just to build programming skill and logic.
Demo of how the final Dice Roller dnd android app looks
dnd dice roller android studio tutorial mini project.
let’s start with creating a new project in android-studio
File > New > New Project
Give a proper name to project ( Dice Roller ) , Select a project storage destination , select minimum API : 22 ,Android 5.1 (Lollipop), all set android project will be get ready in several seconds.
Add the dice resources (from above) to the project by copying them to the res folder in android – studio.
Dice Roller app resources android studio
Optional Changes
To set a icon from this dice roller app project go to AndroidManifest.xml file
android:icon="@drawable/dice3d" and android:roundIcon="@mipmap/dice3d_rounded".
package protocoderspoint.com.androiddicerollertutorial;
import android.media.AudioAttributes;
import android.media.SoundPool;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import protocoderspoint.PreLollipopSoundPool;
public class MainActivity extends AppCompatActivity {
ImageView dice_picture; //reference to dice picture
Random rng=new Random(); //generate random numbers
SoundPool dice_sound; //For dice sound playing
int sound_id; //Used to control sound stream return by SoundPool
Handler handler; //Post message to start roll
Timer timer=new Timer(); //Used to implement feedback to user
boolean rolling=false; //Is die rolling?
RotateAnimation rotate;
int soundplay;
TextView dice_no;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Our function to initialise sound playing
dice_no=(TextView)findViewById(R.id.dice_no);
InitSound();
//Get a reference to image widget
dice_picture = (ImageView) findViewById(R.id.imageView);
dice_picture.setOnClickListener(new HandleClick());
rotate = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(3000);
rotate.setInterpolator(new LinearInterpolator());
//link handler to callback
handler=new Handler(callback);
}
//User pressed dice, lets start
private class HandleClick implements View.OnClickListener {
public void onClick(View arg0) {
if (!rolling) {
rolling = true;
//Show rolling image
dice_picture.setImageResource(R.drawable.dice3d160);
//Start rolling sound
soundplay= dice_sound.play(sound_id, 1.0f, 1.0f, 0, 0, 1.0f);
//Pause to allow image to update
dice_picture.startAnimation(rotate);
timer.schedule(new Roll(), 3000);
}
}
}
//New code to initialise sound playback
void InitSound() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//Use the newer SoundPool.Builder
//Set the audio attributes, SONIFICATION is for interaction events
//uses builder pattern
AudioAttributes aa = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
//default max streams is 1
//also uses builder pattern
dice_sound= new SoundPool.Builder().setAudioAttributes(aa).build();
} else {
//Running on device earlier than Lollipop
//Use the older SoundPool constructor
dice_sound= PreLollipopSoundPool.NewSoundPool();
}
//Load the dice sound
sound_id=dice_sound.load(this,R.raw.shake_dice,1);
}
//When pause completed message sent to callback
class Roll extends TimerTask {
public void run() {
handler.sendEmptyMessage(0);
}
}
//Receives message from timer to start dice roll
Handler.Callback callback = new Handler.Callback() {
public boolean handleMessage(Message msg) {
//Get roll result
//Remember nextInt returns 0 to 5 for argument of 6
//hence + 1
switch(rng.nextInt(6)+1) {
case 1:
rotate.cancel();
dice_no.setText("Dice Number : 1");
dice_picture.setImageResource(R.drawable.one);
break;
case 2:
rotate.cancel();
dice_no.setText("Dice Number : 2");
dice_picture.setImageResource(R.drawable.two);
break;
case 3:
rotate.cancel();
dice_no.setText("Dice Number : 3");
dice_picture.setImageResource(R.drawable.three);
break;
case 4:
rotate.cancel();
dice_no.setText("Dice Number : 4");
dice_picture.setImageResource(R.drawable.four);
break;
case 5:
rotate.cancel();
dice_no.setText("Dice Number : 5");
dice_picture.setImageResource(R.drawable.five);
break;
case 6:
rotate.cancel();
dice_no.setText("Dice Number : 6");
dice_picture.setImageResource(R.drawable.six);
break;
default:
}
rolling=false; //user can press again
return true;
}
};
//Clean up
protected void onPause() {
super.onPause();
dice_sound.pause(sound_id);
}
protected void onDestroy() {
super.onDestroy();
timer.cancel();
}
}
To support APIs pre Lollipop add a new class called PreLollipopSoundPool,java
package protocoderspoint;
import android.media.AudioManager;
import android.media.SoundPool;
/**
* Created a pre Lollipop SoundPool
*/
public final class PreLollipopSoundPool {
@SuppressWarnings("deprecation")
public static SoundPool NewSoundPool() {
return new SoundPool(1, AudioManager.STREAM_MUSIC,0);
}
}
Explanation of the above ActivityMain.java Code
Random number
Random java – user to generate a random number from 1 to 6
Random rng=new Random();
//Get roll result
//Remember nextInt returns 0 to 5 for argument of 6
//hence + 1
rng.nextInt(6)+1
Rotate a imageView in android-studio
RotateAnimation rotate = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
Set Duration for the rotator in milli-sec like (1 sec = 1000milli sec )
In Android-studio Java Soundpool is used to play a sound like in our project we have used a dice roller sound effect to feel like a real dice is spinning. Code below
SoundPool dice_sound; //For dice sound playing
int sound_id; //Used to control sound stream return by SoundPool
New code to initialise sound playback
//New code to initialise sound playback
void InitSound() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//Use the newer SoundPool.Builder
//Set the audio attributes, SONIFICATION is for interaction events
//uses builder pattern
AudioAttributes aa = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
//default max streams is 1
//also uses builder pattern
dice_sound= new SoundPool.Builder().setAudioAttributes(aa).build();
} else {
//Running on device earlier than Lollipop
//Use the older SoundPool constructor
dice_sound= PreLollipopSoundPool.NewSoundPool();
}
//Load the dice sound
sound_id=dice_sound.load(this,R.raw.shake_dice,1);
}
As java codes runs within a fraction of seconds, it will be hard to view the image is getting spinned or an real animation effect, i have made use of Timer method with will help programmer to show dice rolling effect.
Timer timer=new Timer(); //Used to implement Time to spin
Timer is used to provide a delay in roll.
timer.schedule(new Roll(), 3000);
above snippet code timer is set to 3 sec’s where the viewer will be above to see the animation effect for 3 sec.
Adding a list of options in Alert Dialog
in android tsudio
Working Demo
An AlertDialog is a Simplest way to get response from a user by providing them a option to select .This post will show you how can we add a list of choices to our AlertDialog box in android.
If you check official documentation that have describe that, their are total three kinds of lists that can be used with an AlertDialog in android :
Traditional single-choice list
Persistent single-choice list (radio buttons)
Persistent multiple-choice list (checkboxes)
In this Tutorial i will give demo on all 3 kinds of alert dialog choice list
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
Traditional single-choice Android alert Dialog list.
Traditional Alert Dialog list options
The way to make use of a traditional single-choice list is to use setItems method.
Call the Below Function on button Click
public void TraditionallistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose an Option");
// add a list
String[] options = {"Option1", "Option2", "Option3", "Option4", "Option3"};
//Pass the array list in Alert dialog
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0: // Select option task
case 1: // Config it as you need here
case 2:
case 3:
case 4:
}
}
});
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
In Traditional list their is no need to set any positive button, as user select any list from alert dialog list the item will automatically gets selected and alert dialog get closed.
Radio button single-choice Android alert Dialog list.
Radio button alert dialog list options
The Best advantage of the radio button list over a Simple traditional list is that the user will be able to check which is the default selected option in the list where as in Traditional list their is no default option.
The way to make a radio button list is to use setSingleChoiceItems.
Call the below code on button Click.
public void radiolistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose a Option");
// add a radio button list
final String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(selectedoption, checkedItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user checked an item
Toast.makeText(MainActivity.this,"selected option: "+selectedoption[which],Toast.LENGTH_LONG).show();
//here 'which' is the position selected
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
In Radiobutton list we can implement 2 kinds of buttons in alert dialog box i.e setPositiveButton() and setNegativeButton() with different actions.
Checkbox list choice Android alert Dialog list.
setMultiChoiceItems alert dialog list
Here in Checkbox list alert dialog list user can select multiple option from the given options.
The way to make a checkbox list is to use setMultiChoiceItems.
public void checkboxlistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose some Options ");
// add a checkbox list
String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
final boolean[] checkedItems = {true, false, false, false, false};
builder.setMultiChoiceItems(selectedoption, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// user checked or unchecked a box
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
Complete Source Code android Alert Dialog with list of options
package protocoderspoint.com.customalertdialog;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button simplelist,radiolist,checkboxlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simplelist=(Button)findViewById(R.id.listdialog1);
radiolist=(Button)findViewById(R.id.radiolist);
checkboxlist=(Button)findViewById(R.id.checkboxlist);
simplelist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
simplelistDialog();
}
});
radiolist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
radiolistDialog();
}
});
checkboxlist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkboxlistDialog();
}
});
}
public void simplelistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose an Option");
// add a list
String[] options = {"Option1", "Option2", "Option3", "Option4", "Option3"};
//Pass the array list in Alert dialog
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0: // Select option task
case 1: // Config it as you need here
case 2:
case 3:
case 4:
}
}
});
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
public void radiolistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose a Option");
// add a radio button list
final String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(selectedoption, checkedItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user checked an item
Toast.makeText(MainActivity.this,"selected option: "+selectedoption[which],Toast.LENGTH_LONG).show();
//here 'which' is the position selected
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
public void checkboxlistDialog()
{
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Choose some Options ");
// add a checkbox list
String[] selectedoption = {"Option1", "Option2", "Option3", "Option4", "Option5"};
final boolean[] checkedItems = {true, false, false, false, false};
builder.setMultiChoiceItems(selectedoption, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// user checked or unchecked a box
}
});
// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// user clicked OK
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
}
}