Difference between revisions of "Basic Android"

esse quam videri
Jump to: navigation, search
(In Class Demo)
(In Class Demo)
 
(13 intermediate revisions by the same user not shown)
Line 20: Line 20:
  
 
==Basics==
 
==Basics==
 +
  
 
*src folder containing all the source
 
*src folder containing all the source
Line 51: Line 52:
 
          
 
          
 
         //Get the Button and the TextView from the Resource class
 
         //Get the Button and the TextView from the Resource class
         Button btn = (Button)this.findViewById(R.id.button1);
+
         Button btn = (Button)this.findViewById(R.id.button1); //needs import android.widget.Button;
         final TextView tv = (TextView)this.findViewById(R.id.textView1);   
+
 
 +
        //Final in java can only be initialized once this is necessary to for use in inner method
 +
         final TextView tv = (TextView)this.findViewById(R.id.textView1);  //needs import android.widget.TextView;
 
         String s = "hello";
 
         String s = "hello";
 
         tv.setText(s);
 
         tv.setText(s);
Line 70: Line 73:
 
}
 
}
 
});</syntaxhighlight>
 
});</syntaxhighlight>
 +
 +
We can also do this without the inner method by declaring a click method in the class
 +
<syntaxhighlight lang="java">
 +
public void buttonPressMe_OnCLick(View v)
 +
    {
 +
        TextView tv = (TextView)this.findViewById(R.id.textView2);
 +
        tv.setText("Hello From Button!!");
 +
    }
 +
</syntaxhighlight>
 +
Then we can set the click handler in the layout xml in out case acivity_main.xml
 +
<syntaxhighlight lang="xml">
 +
<Button
 +
        android:text="Press Me"
 +
        android:layout_width="wrap_content"
 +
        android:layout_height="wrap_content"
 +
        android:layout_below="@+id/textView"
 +
        android:layout_alignParentLeft="true"
 +
        android:layout_alignParentStart="true"
 +
        android:layout_marginLeft="13dp"
 +
        android:layout_marginStart="13dp"
 +
        android:layout_marginTop="24dp"
 +
        android:id="@+id/buttonPressMe"
 +
        android:onClick="buttonPressMe_OnCLick (MainActivity)" />
 +
</syntaxhighlight>
  
 
==Events==
 
==Events==
Line 81: Line 108:
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
 
public class Dog {
 
public class Dog {
 +
    public String Name; //Java uses capital S String
 +
    public int Weight;
 +
    public String BarkSound;
  
public String Name;
+
    //Constructor
public int Weight;
+
    public Dog()
public String BarkSound;
+
    {
+
        this.Name = "fido";
//Constructor
+
        this.Weight = 1;
public Dog()
+
        this.BarkSound = "woof";
{
+
    }
this.Name = "fido";
+
 
this.Weight = 1;
+
    public void Eat()
this.BarkSound = "woof";
+
    {
}
+
        this.Weight++;
+
    }
public void Eat()
+
    public void Poop()
{
+
    {
this.Weight++;
+
        this.Weight--;
}
+
    }
public void Poop()
+
 
{
+
    public String About()
this.Weight--;
+
    {
}
+
        //Java string.format is similar to c# but used %s for string substitution
+
        return String.format("Hello my name is %s. I weigh %s lbs",
public String About()
+
                this.Name, this.Weight);
{
+
    }
return String.format("Hello my name is %s. I weigh %s lbs",
 
this.Name, this.Weight);
 
}
 
 
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=In Class Demo=
 
=In Class Demo=
*Get and install Android Studio this demo uses .086 https://developer.android.com/sdk/installing/studio.html
+
*Get and install Android Studio this demo uses 2.2 https://developer.android.com/sdk/installing/studio.html
 
*Start Android Studio
 
*Start Android Studio
*Select Configure[[File:AndroidStudioConfigure.png]]
+
*Select Configure
*Select Android SDK Manager{{AndroidStudioSDKManager.png|Alt}}
+
[[File:AndroidStudioConfigure.png]]
*Make sure you have a current SDK for this Demo we will use 23.05 {{AndroidSDKManagerCurrentVersion.PNG|Alt}}
+
*Select Android SDK Manager
*Go back to the main menu and select New Project{{AndroidStudioNewProject.PNG|Alt}}
+
[[File:AndroidStudioSDKManager.png]]
*Name the Project OOPDog and select Next{{AnroidStudioConfigureNewProject.PNG|Alt}}
+
*Make sure you have a current SDK for this Demo we will use 24
*Select a Minimum SDK for this demo we will use ASI15 : IceCreamSandwich{{AnroidStudioConfigureNewProjectSDK.PNG|Alt}}
+
[[File:AndroidSDKManagerCurrentVersion.PNG|Alt]]
*Select Blank Activity for the Project template{{AndroidStudioBlankActivity.PNG|Alt}}
+
*Go back to the main menu and select New Project
*The defaults are fine for the activity name select next{{AnroidStudioNewProjectAcvtivity.PNG|Alt}}
+
[[File:AndroidStudioNewProject.PNG|Alt]]
 +
*Name the Project OOPDog and select Next
 +
[[File:AnroidStudioConfigureNewProject.PNG|Alt]]
 +
*Select a Minimum SDK for this demo we will use API15 : IceCreamSandwich
 +
[[File:AnroidStudioConfigureNewProjectSDK.PNG|Alt]]
 +
*Select Blank Activity for the Project template
 +
[[File:AndroidStudioBlankActivity.PNG|Alt]]
 +
*The defaults are fine for the activity name select next
 +
[[File:AnroidStudioNewProjectAcvtivity.PNG|Alt]]
 +
 
 +
*After a minute or so you can open the Project window if it isn't already open Att-1 or View/Tool Windows/Project
 +
[[File:AndroidStudioShowOpenMyActivity.png|Alt]]
 +
*Add Dog class
 +
[[File:AndroidStudioNewClass.png|Alt]]
 +
*Name the class Dog
 +
[[File:AndroidStudioNewClassName.PNG|Alt]]
 +
 
 +
*Here is the c# dog class we have been using we need to change it a bit
 +
[[Android Studio CSharpDog Code]]
  
*After a minute or so you can open the Project window if it isn't already open Att-1 or View/Tool Windows/Project {{AndroidStudioShowOpenMyActivity.png|Alt}}
+
[[File:AndroidStudioCSharpDog.PNG|Alt]]
*Add Dog class {{AndroidStudioNewClass.png|Alt}}
 
*Name the class Dog {{AndroidStudioNewClassName.PNG|Alt}}
 
  
*Here is the c# dog class we have been using we need to change it a bit [[Android Studio CSharpDog Code]]
 
{{AndroidStudioCSharpDog.PNG|Alt}}
 
 
*In Java [[Android Studio JavaDog]]
 
*In Java [[Android Studio JavaDog]]
{{AndroidStudioJavaDog.PNG|Alt}}
+
[[File:AndroidStudioJavaDog.PNG|Alt]]

Latest revision as of 19:40, 8 November 2016


Android Basics

Basics

  • src folder containing all the source
  • res folder containing all the resources

folder hierarchy explained http://developer.android.com/tools/projects/index.html

First app demo http://developer.android.com/training/basics/firstapp/running-app.html

App lifecycle http://developer.android.com/guide/components/activities.html

activity_lifecycle.png

Resources

No DPI or PPI Andoid uses dp density independent pixels or sp scale interdependent pixels http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

also see supporting multiple screens http://developer.android.com/guide/practices/screens_support.html

Activities

Activity life cycle http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle

Get an instance of an object from the R class

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //Get the Button and the TextView from the Resource class
        Button btn = (Button)this.findViewById(R.id.button1); //needs import android.widget.Button;

        //Final in java can only be initialized once this is necessary to for use in inner method
        final TextView tv = (TextView)this.findViewById(R.id.textView1);  //needs import android.widget.TextView;
        String s = "hello";
        tv.setText(s);
    }
notice the cast to the type also notice that the TextView is marked as final 
this is so that we can use it in an inner method

handle a click event

btn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				tv.setText(d.About());
			}
		});

We can also do this without the inner method by declaring a click method in the class

public void buttonPressMe_OnCLick(View v)
    {
        TextView tv = (TextView)this.findViewById(R.id.textView2);
        tv.setText("Hello From Button!!");
    }

Then we can set the click handler in the layout xml in out case acivity_main.xml

<Button
        android:text="Press Me"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="13dp"
        android:layout_marginStart="13dp"
        android:layout_marginTop="24dp"
        android:id="@+id/buttonPressMe"
        android:onClick="buttonPressMe_OnCLick (MainActivity)" />

Events

Lots more good reading http://developer.android.com/guide/topics/fundamentals.html


AVD

Dog Class in java

public class Dog {
    public String Name; //Java uses capital S String
    public int Weight;
    public String BarkSound;

    //Constructor
    public Dog()
    {
        this.Name = "fido";
        this.Weight = 1;
        this.BarkSound = "woof";
    }

    public void Eat()
    {
        this.Weight++;
    }
    public void Poop()
    {
        this.Weight--;
    }

    public String About()
    {
        //Java string.format is similar to c# but used %s for string substitution
        return String.format("Hello my name is %s. I weigh %s lbs",
                this.Name, this.Weight);
    }
}

In Class Demo

AndroidStudioConfigure.png

  • Select Android SDK Manager

AndroidStudioSDKManager.png

  • Make sure you have a current SDK for this Demo we will use 24

Alt

  • Go back to the main menu and select New Project

Alt

  • Name the Project OOPDog and select Next

Alt

  • Select a Minimum SDK for this demo we will use API15 : IceCreamSandwich

Alt

  • Select Blank Activity for the Project template

Alt

  • The defaults are fine for the activity name select next

Alt

  • After a minute or so you can open the Project window if it isn't already open Att-1 or View/Tool Windows/Project

Alt

  • Add Dog class

Alt

  • Name the class Dog

Alt

  • Here is the c# dog class we have been using we need to change it a bit

Android Studio CSharpDog Code

Alt

Alt