mobile software engineering crash course - c04 android cont
TRANSCRIPT
Mohammad Shaker
FIT of Damascus - AI dept.
Mobile SE – August 2012
Mobile
Software
Engineering
L04 – Android Cont.
ActivitiesStarting Another Activity
Intentan object that provides runtime binding between separate
components (such as two activities)
Intentcarry a collection of various data types as key-value pairs
called extras through putExtra()
It’s a good practice..to define keys for intent extras using your app's package name as a prefix.
This ensures they are unique, in case your app interacts with other apps.
Starting Another Activityhttp://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent
Project Attached
Starting Another Activity
public final static String EXTRA_MESSAGE = "com.example.intetsample.MESSAGE";
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.editText1);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
AndroidManifest.xml
AndroidManifest.xml<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayMessageActivity"
android:label="@string/title_activity_display_message" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.intetsample.MainActivity" />
</activity>
</application>
Managing the Activity
Life Cycle
Destroy the activityonDestroy()
Destroy the activity
onPasue()
@Override
public void onPause() {
// Always call the superclass method first
super.onPause();
// Release the Camera because
// we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
onResume()
@Override
public void onResume() {
// Always call the superclass method first
super.onResume();
// Get the Camera instance as the activity
// achieves full user focus
if (mCamera == null) {
// Local method to handle camera init
initializeCamera(); }
}
Recreating activityonSaveInstanceState
Storage – DatabaseSqlite3
Draggable stick project sample attached
OpenGL ES
How can we animate?
'Must Override a Superclass
Method' Errors after importing a
project into Eclipse Problemhttp://stackoverflow.com/questions/1678122/must-override-a-superclass-
method-errors-after-importing-a-project-into-eclips
@Override
public boolean onTouchEvent(MotionEvent e) {
float x = e.getX(); float y = e.getY();
switch (e.getAction()) {
case MotionEvent.ACTION_MOVE:
float dx = x - mPreviousX; float dy = y - mPreviousY;
// reverse direction of rotation above the mid-line
if (y > getHeight() / 2) { dx = dx * -1 ; }
// reverse direction of rotation to left of the mid-line
if (x < getWidth() / 2) { dy = dy * -1 ; }
mRenderer.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;
// = 180.0f / 320
requestRender();
}
mPreviousX = x; mPreviousY = y;
return true;
}
Let’s get our hands dirty
with code!
Advanced Training• Making Your App Location Aware• Performing Network Operations• Transferring Data Without Draining the Battery• Syncing to the Cloud• Designing for Multiple Screens• Improving Layout Performance• Managing Audio Playback• Optimizing Battery Life• Creating Custom Views• Adding Search Functionality
• Remembering Users• Sharing Content• Capturing Photos• Maintaining Multiple APKs• Creating Backward-Compatible UIs• Developing for Enterprise• Monetizing Your App
• Designing Effective Navigation• Implementing Effective Navigation• Designing for TV• Displaying Bitmaps Efficiently• Implementing Accessibility• Displaying Graphics with OpenGL ES
See you nxt time!