SplashScreen.java
package project.;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
/**
* Created by hp on 2/10/2018.
*/
public class SplashScreen extends AppCompatActivity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 2000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
/* New Handler to start the Menu-Activity
* and close this Splash-Screen after some seconds.*/
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
startActivity(new Intent(SplashScreen.this, LoginActivity.class));
finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
ViewPagerAdapter.java
package project.;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
* Created by hp on 2/9/2018.
*/
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position ==0) {
return new CategoryFragment();
} else return new CategoryFragment();
}
@Override
public int getCount() {
return 2;
}
}
Author: Felicya
How to Start?
SignupActivity.java
package project.;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by hp on 2/10/2018.
*/
public class SignupActivity extends AppCompatActivity {
private static final String TAG = “SignupActivity”;
private FirebaseAuth mAuth;
private ProgressBar progressBar;
EditText _nameText;
@BindView(R.id.input_email) EditText _emailText;
@BindView(R.id.input_password) EditText _passwordText;
@BindView(R.id.button_signup) Button _signupButton;
@BindView(R.id.link_login) TextView _loginLink;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
mAuth = FirebaseAuth.getInstance();
ButterKnife.bind(this);
_signupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// signup();
String email = _emailText.getText().toString().trim();
String password = _passwordText.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), “Enter email address!”, Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), “Enter password!”, Toast.LENGTH_SHORT).show();
return;
}
if (password.length() < 6) {
Toast.makeText(getApplicationContext(), “Password too short, enter minimum 6 characters!”, Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
//create user
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(SignupActivity.this, “createUserWithEmail:onComplete:” + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(SignupActivity.this, “Authentication failed.” + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
startActivity(new Intent(SignupActivity.this, LoginActivity.class));
finish();
}
}
});
}
});
_loginLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Finish the registration screen and return to the Login activity
finish();
}
});
}
// public void signup() {
// Log.d(TAG, “Signup”);
//
// if (!validate()) {
// onSignupFailed();
// return;
// }
//
// _signupButton.setEnabled(false);
//
// final ProgressDialog progressDialog = new ProgressDialog(SignupActivity.this,
// R.style.Theme_AppCompat_Light); //edit le
// progressDialog.setIndeterminate(true);
// progressDialog.setMessage(“Creating Account…”);
// progressDialog.show();
//
// String name = _nameText.getText().toString();
// String email = _emailText.getText().toString();
// String password = _passwordText.getText().toString();
//
// // TODO: Implement your own signup logic here.
//
// new android.os.Handler().postDelayed(
// new Runnable() {
// public void run() {
// // On complete call either onSignupSuccess or onSignupFailed
// // depending on success
// onSignupSuccess();
// // onSignupFailed();
// progressDialog.dismiss();
// }
// }, 3000);
// }
// public void onSignupSuccess() {
// _signupButton.setEnabled(true);
// setResult(RESULT_OK, null);
// finish();
// }
//
// public void onSignupFailed() {
// Toast.makeText(getBaseContext(), “Signup failed”, Toast.LENGTH_LONG).show();
//
// _signupButton.setEnabled(true);
// }
//
// public boolean validate() {
// boolean valid = true;
//
// String name = _nameText.getText().toString();
// String email = _emailText.getText().toString();
// String password = _passwordText.getText().toString();
//
// if (name.isEmpty() || name.length() < 3) {
// _nameText.setError(“at least 3 characters”);
// valid = false;
// } else {
// _nameText.setError(null);
// }
//
// if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
// _emailText.setError(“enter a valid email address”);
// valid = false;
// } else {
// _emailText.setError(null);
// }
//
// if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
// _passwordText.setError(“between 4 and 10 alphanumeric characters”);
// valid = false;
// } else {
// _passwordText.setError(null);
// }
//
// return valid;
// }
}
Managing Java
SessionManager.java
package project.;
import android.content.Context;
import android.content.SharedPreferences;
/**
* Created by hp on 2/17/2018.
*/
public class SessionManager {
private static final String PREF_NAME = "Oleo";
private static final String ID_USER = "USER_ID";
private static final String EMAIL_USER = "USER_EMAIL";
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
public SessionManager(Context context) {
preferences = context.getSharedPreferences(PREF_NAME, 0);
editor = preferences.edit();
}
public void setEmail(String email) {
editor.putString(EMAIL_USER, email);
editor.commit();
}
public void setUserID(String id) {
editor.putString(ID_USER, id);
editor.commit();
}
public String getUserID() {
return preferences.getString(ID_USER, "");
}
public String getEmailUser() { return preferences.getString(EMAIL_USER, ""); }
public void clearUserID() {
editor.remove(ID_USER);
editor.commit();
}
public void clearAll() {
editor.clear();
editor.commit();
}
}
Coding Java for live
MainActivity.java
package project.;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import com.google.firebase.auth.FirebaseAuth;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
private ViewPager viewPager;
private DrawerLayout drawer;
private TabLayout tabLayout;
private String[] pageTitle = {“Home”, “Category”};
private FirebaseAuth mAuth;
private SessionManager sessionManager;
private static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
sessionManager = new SessionManager(this);
mAuth = FirebaseAuth.getInstance();
viewPager = (ViewPager)findViewById(R.id.view_pager);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
drawer = (DrawerLayout) findViewById(R.id.drawerLayout);
setSupportActionBar(toolbar);
//create default navigation drawer toggle
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
//setting Tab layout (number of Tabs = number of ViewPager pages)
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
for (int i = 0; i < 2; i++) {
tabLayout.addTab(tabLayout.newTab().setText(pageTitle[i]));
}
//set gravity for tab bar
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
//handling navigation view item event
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
assert navigationView != null;
navigationView.setNavigationItemSelectedListener(this);
//set viewpager adapter
ViewPagerAdapter pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(pagerAdapter);
//change Tab selection when swipe ViewPager
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
//change ViewPager page when tab selected
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.go) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
} else if (id == R.id.close) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
// Setting Dialog Title
alertDialog.setTitle(“KONFIRMASI”);
// Setting Dialog Message
alertDialog.setMessage(“Anda yakin akan Log Out?”);
// Setting Icon to Dialog
alertDialog.setIcon(R.drawable.seru2);
// Setting Positive “Yes” Button
alertDialog.setPositiveButton(“Ya”, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
mAuth.signOut();
Intent back = new Intent(MainActivity.this, LoginActivity.class);
startActivity(back);
finish();
}
});
// Showing Alert Message
alertDialog.show();
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
assert drawer != null;
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
}
Future Code Java
LoginActivity.java
package project.oleo;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import butterknife.ButterKnife;
import butterknife.BindView;
/**
* Created by hp on 2/10/2018.
*/
public class LoginActivity extends AppCompatActivity {
private static final String TAG = “LoginActivity”;
private static final int REQUEST_SIGNUP = 0;
private FirebaseAuth mAuth;
private SessionManager session;
private String email, password;
@BindView(R.id.input_email) EditText _emailText;
@BindView(R.id.input_password) EditText _passwordText;
@BindView(R.id.button_login) Button _loginButton;
@BindView(R.id.link_signup) TextView _signupLink;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
session = new SessionManager(this);
mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
onLoginSuccess();
}
_loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login();
}
});
_signupLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Start the Signup activity
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
}
});
}
public void login() {
Log.d(TAG, “Login”);
if (!validate()) {
onLoginFailed();
return;
}
_loginButton.setEnabled(false);
final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.setMessage(“Authenticating…”);
progressDialog.show();
email = _emailText.getText().toString();
password = _passwordText.getText().toString();
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user’s information
Log.d(TAG, “signInWithEmail:success”);
FirebaseUser user = mAuth.getCurrentUser();
session.setUserID(user.getUid());
session.setEmail(email);
progressDialog.dismiss();
onLoginSuccess();
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, “signInWithEmail:failure”, task.getException());
progressDialog.dismiss();
onLoginFailed();
}
// …
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SIGNUP) {
if (resultCode == RESULT_OK) {
// TODO: Implement successful signup logic here
// By default we just finish the Activity and log them in automatically
this.finish();
}
}
}
@Override
public void onBackPressed() {
// disable going back to the MainActivity
moveTaskToBack(true);
}
public void onLoginSuccess() {
_loginButton.setEnabled(true);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
public void onLoginFailed() {
Toast.makeText(getBaseContext(), “Login failed”, Toast.LENGTH_LONG).show();
_loginButton.setEnabled(true);
}
public boolean validate() {
boolean valid = true;
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError(“enter a valid email address”);
valid = false;
} else {
_emailText.setError(null);
}
if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
_passwordText.setError(“between 4 and 10 alphanumeric characters”);
valid = false;
} else {
_passwordText.setError(null);
}
return valid;
}
}
Getting Help Java
CategoryRespons.java
package project.oleo;
import com.google.firebase.firestore.IgnoreExtraProperties;
@IgnoreExtraProperties
public class CategoryRespons {
private String namaCategory;
// private String alamatWisata;
private String fotoCategory;
public CategoryRespons() {
}
public CategoryRespons(String namaCategory, String fotoCategory) {
this.namaCategory = namaCategory;
// this.alamatWisata = alamatWisata;
this.fotoCategory = fotoCategory;
}
public String getNamaCategory() {
return namaCategory;
}
public void setName(String namaCategory) {
this.namaCategory = namaCategory;
}
public String getFotoCategory() {
return fotoCategory;
}
public void setImage(String fotoCategory) {
this.fotoCategory = fotoCategory;
}
}
Using Java
CategoryFragment.java
package project.oleo;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import com.google.firebase.firestore.Query;
import butterknife.BindView;
import butterknife.ButterKnife;
import de.hdodenhof.circleimageview.CircleImageView;
/**
* Created by hp on 5/19/2018.
*/
public class CategoryFragment extends Fragment{
public CategoryFragment() {
// Required empty public constructor
}
@BindView(R.id.list_category)
RecyclerView friendList;
private FirebaseFirestore db;
private FirestoreRecyclerAdapter adapter;
LinearLayoutManager linearLayoutManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_category, container, false);
ButterKnife.bind(this, view);
init();
getFriendList();
return view;
}
private void init(){
linearLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext(), LinearLayoutManager.VERTICAL, false);
friendList.setLayoutManager(linearLayoutManager);
db = FirebaseFirestore.getInstance();
}
private void getFriendList(){
Query query = db.collection(“category”);
FirestoreRecyclerOptions<CategoryRespons> response = new FirestoreRecyclerOptions.Builder<CategoryRespons>()
.setQuery(query, CategoryRespons.class)
.build();
adapter = new FirestoreRecyclerAdapter<CategoryRespons, CategoryHolder>(response) {
@Override
public void onBindViewHolder(CategoryHolder holder, int position, CategoryRespons model) {
holder.textName.setText(model.getNamaCategory());
// holder.textTitle.setText(model.getAlamatWisata());
Glide.with(getActivity().getApplicationContext())
.load(model.getFotoCategory())
.into(holder.imageCategory);
holder.itemView.setOnClickListener(v -> {
// Snackbar.make(friendList, model.getNamaCategory()+”, “+model.getAlamatWisata(), Snackbar.LENGTH_LONG)
Snackbar.make(friendList, model.getNamaCategory(), Snackbar.LENGTH_LONG)
.setAction(“Action”, null).show();
});
}
@Override
public CategoryHolder onCreateViewHolder(ViewGroup group, int i) {
View view = LayoutInflater.from(group.getContext())
.inflate(R.layout.format_list_category, group, false);
return new CategoryHolder(view);
}
@Override
public void onError(FirebaseFirestoreException e) {
Log.e(“error”, e.getMessage());
}
};
adapter.notifyDataSetChanged();
friendList.setAdapter(adapter);
}
public class CategoryHolder extends RecyclerView.ViewHolder {
@BindView(R.id.nama_category)
TextView textName;
@BindView(R.id.foto_category)
CircleImageView imageCategory;
// @BindView(R.id.background_category)
// TextView textTitle;
// RelativeLayout backgroundCategory;
public CategoryHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}
Starter Java
AndroidManifest.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”project.oleo”>
<uses-permission android:name=”android.permission.INTERNET” />
<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:roundIcon=”@mipmap/ic_launcher_round”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”>
<activity android:name=”.SplashScreen”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”project.oleo.MainActivity”/>
<activity android:name=”project.oleo.LoginActivity”/>
<activity android:name=”project.oleo.SignupActivity”/>
</application>
</manifest>
build.gradle 1
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”project.oleo”>
<uses-permission android:name=”android.permission.INTERNET” />
<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:roundIcon=”@mipmap/ic_launcher_round”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”>
<activity android:name=”.SplashScreen”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”project.oleo.MainActivity”/>
<activity android:name=”project.oleo.LoginActivity”/>
<activity android:name=”project.oleo.SignupActivity”/>
</application>
</manifest>
build.gradle 2
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:3.0.0’
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath ‘com.google.gms:google-services:3.1.0’
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Menu
drawer_menu.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<menu xmlns:android=”http://schemas.android.com/apk/res/android”>
<item
android:id=”@+id/go”
android:icon=”@drawable/bantuan”
android:title=”Tentang Kami” />
<item
android:id=”@+id/close”
android:icon=”@drawable/keluar”
android:title=”Log Out” />
</menu>
VALUES
strings.xml
<resources>
<string name=”app_name”>Oleo</string>
<!–login logout–>
<string name=”text_login”>
Tidak mempunyai akun?<u>Buat sekarang</u>
</string>
<string name=”text_signup”>
Sudah punya akun?<u>Login sekarang</u>
</string>
<!–NAV_DRAWER–>
<string name=”navigation_drawer_open”>Open</string>
<string name=”navigation_drawer_close”>Close</string>
<string-array name=”my_items”>
<item>Dummy Item 1</item>
<item>Dummy Item 2</item>
<item>Dummy Item 3</item>
<item>Dummy Item 4</item>
<item>Dummy Item 5</item>
<item>Dummy Item 6</item>
<item>Dummy Item 7</item>
<item>Dummy Item 8</item>
<item>Dummy Item 9</item>
<item>Dummy Item 10</item>
<item>Dummy Item 11</item>
<item>Dummy Item 12</item>
<item>Dummy Item 13</item>
<item>Dummy Item 14</item>
</string-array>
</resources>
styles.xml
<resources>
<!– Base application theme. –>
<style name=”AppTheme” parent=”Theme.AppCompat.Light.DarkActionBar”>
<!– Customize your theme here. –>
<item name=”windowNoTitle”>true</item>
<item name=”windowActionBar”>false</item>
<item name=”colorPrimary”>@color/colorPrimary</item>
<item name=”colorPrimaryDark”>@color/colorPrimaryDark</item>
<item name=”colorAccent”>@color/colorAccent</item>
</style>
</resources>
splash screen
splashscreen.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”match_parent”
android:layout_height=”match_parent”>
<ImageView
android:id=”@+id/splashscreen”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:src=”@drawable/logo_oleo”
android:layout_margin=”60dp”/>
</LinearLayout>