diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..39fb081 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..fe72da5 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5d19981 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..7b215e0 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..cc9d9d5 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,44 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 24 + buildToolsVersion "25.0.1" + defaultConfig { + applicationId "cc.slideworks.pokedex" + minSdkVersion 16 + targetSdkVersion 24 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + packagingOptions { + exclude 'META-INF/DEPENDENCIES.txt' + exclude 'META-INF/LICENSE.txt' + exclude 'META-INF/NOTICE.txt' + exclude 'META-INF/NOTICE' + exclude 'META-INF/LICENSE' + exclude 'META-INF/DEPENDENCIES' + exclude 'META-INF/notice.txt' + exclude 'META-INF/license.txt' + exclude 'META-INF/dependencies.txt' + exclude 'META-INF/LGPL2.1' + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:24.2.1' + testCompile 'junit:junit:4.12' + compile 'com.squareup.retrofit2:retrofit:2.2.0' + compile 'com.squareup.retrofit2:converter-jackson:2.2.0' + compile 'com.squareup.picasso:picasso:2.5.2' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..74e465f --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\Sony\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/cc/slideworks/pokedex/ExampleInstrumentedTest.java b/app/src/androidTest/java/cc/slideworks/pokedex/ExampleInstrumentedTest.java new file mode 100644 index 0000000..0d8e018 --- /dev/null +++ b/app/src/androidTest/java/cc/slideworks/pokedex/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package cc.slideworks.pokedex; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("cc.slideworks.pokedex", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5b66a6b --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/cc/slideworks/pokedex/Pokemon.java b/app/src/main/java/cc/slideworks/pokedex/Pokemon.java new file mode 100644 index 0000000..ae3c7c7 --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/Pokemon.java @@ -0,0 +1,42 @@ +package cc.slideworks.pokedex; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.io.Serializable; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Pokemon implements Serializable{ + + public String name; + public String resource_uri; + public int id; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getResource_uri() { + return resource_uri; + } + + public void setResource_uri(String resource_uri) { + this.resource_uri = resource_uri; + } + + public String getName(){ + return name; + } + + public void setName(String name){ + this.name = name; + } + + @Override + public String toString(){ + return getName(); + } + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/PokemonDetalhes.java b/app/src/main/java/cc/slideworks/pokedex/PokemonDetalhes.java new file mode 100644 index 0000000..fac3da0 --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/PokemonDetalhes.java @@ -0,0 +1,59 @@ +package cc.slideworks.pokedex; + + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.io.Serializable; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class PokemonDetalhes implements Serializable { + + public String name; + public String pkdx_id; + public String picture; + public List types; + public String species; + + public String getSpecies() { + return species; + } + + public void setSpecies(String species) { + this.species = species; + } + + + public List getTypes() { + return types; + } + + public void setTypes(List types) { + this.types = types; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPkdx_id() { + return pkdx_id; + } + + public void setPkdx_id(String pkdx_id) { + this.pkdx_id = pkdx_id; + } + + public String getPicture() { + return "media/img/"+pkdx_id+".png"; + } + + public void setPicture(String picture) { + this.picture = "media/img/"+picture+".png"; + } + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/Pokemons.java b/app/src/main/java/cc/slideworks/pokedex/Pokemons.java new file mode 100644 index 0000000..81341ed --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/Pokemons.java @@ -0,0 +1,16 @@ +package cc.slideworks.pokedex; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.util.List; + +/** + * Created by Sony on 01/03/2017. + */ + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Pokemons { + + public List pokemon; + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/Types.java b/app/src/main/java/cc/slideworks/pokedex/Types.java new file mode 100644 index 0000000..756352f --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/Types.java @@ -0,0 +1,20 @@ +package cc.slideworks.pokedex; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.io.Serializable; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Types implements Serializable { + + public String name; + + public String getName() { + return name.toString() ; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/adapter/PokemonsAdapter.java b/app/src/main/java/cc/slideworks/pokedex/adapter/PokemonsAdapter.java new file mode 100644 index 0000000..c03f120 --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/adapter/PokemonsAdapter.java @@ -0,0 +1,51 @@ +package cc.slideworks.pokedex.adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; +import android.content.Context; + +import java.util.List; + +import cc.slideworks.pokedex.Pokemon; +import cc.slideworks.pokedex.R; + +public class PokemonsAdapter extends BaseAdapter{ + + private final List pokes; + private final Context context; + + public PokemonsAdapter(Context context, List pokes) { + this.pokes = pokes; + this.context = context; + } + + @Override + public int getCount() { + return pokes.size(); + } + + @Override + public Object getItem(int position) { + return pokes.get(position); + } + + @Override + public long getItemId(int position) { + return pokes.get(position).getId(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + + LayoutInflater inflater = LayoutInflater.from(context); + View view = inflater.inflate(R.layout.lista_pokemons, null); + + TextView nome = (TextView) view.findViewById(R.id.nome); + nome.setText(pokes.get(position).toString()); + + return view; + } +} diff --git a/app/src/main/java/cc/slideworks/pokedex/model/PokemonDAO.java b/app/src/main/java/cc/slideworks/pokedex/model/PokemonDAO.java new file mode 100644 index 0000000..70425cd --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/model/PokemonDAO.java @@ -0,0 +1,123 @@ +package cc.slideworks.pokedex.model; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.content.ContentValues; + +import java.util.ArrayList; +import java.util.List; + +import cc.slideworks.pokedex.Pokemon; + +public class PokemonDAO extends SQLiteOpenHelper { + + public PokemonDAO(Context context) { + super(context, "Pokedex", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + String sql = "CREATE TABLE pokemon (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, caminho TEXT NOT NULL);"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + String sql = "DROP TABLE IF EXISTS pokemon;"; + db.execSQL(sql); + onCreate(db); + } + + public void insere(String nome, String caminho) { + + if(existe(nome) != 0){ + + altera(nome, caminho, existe(nome)); + + }else{ + SQLiteDatabase db = getWritableDatabase(); + + ContentValues dados = new ContentValues(); + + dados.put("nome", nome); + dados.put("caminho", caminho); + + db.insert("pokemon", null, dados); + } + + } + public void altera(String nome, String caminho, int id){ + SQLiteDatabase db = getReadableDatabase(); + + ContentValues dados = new ContentValues(); + + dados.put("nome", nome); + dados.put("caminho", caminho); + + String idstring = Integer.toString(id); + + String[] parms = {idstring}; + + db.update("pokemon", dados, "id = ?", parms); + } + + private int existe(String nome){ + SQLiteDatabase db = getReadableDatabase(); + String sql = "SELECT nome FROM pokemon WHERE nome=? LIMIT 1;"; + Cursor c = db.rawQuery(sql, new String[]{nome}); + //int quantidade = c.getCount(); + + int id = 0; + + while(c.moveToNext()){ + id = c.getColumnIndex("id"); + } + c.close(); + + return id; + } + + public List buscaPokemons() { + + String sql = "SELECT * FROM pokemon ORDER BY nome ASC;"; + SQLiteDatabase db = getReadableDatabase(); + Cursor c = db.rawQuery(sql, null); + + List pokemons = new ArrayList(); + + while(c.moveToNext()){ + Pokemon pokemon = new Pokemon(); + pokemon.setId(c.getInt(c.getColumnIndex("id"))); + pokemon.setName(c.getString(c.getColumnIndex("nome"))); + pokemon.setResource_uri(c.getString(c.getColumnIndex("caminho"))); + pokemons.add(pokemon); + } + c.close(); + + return pokemons; + } + + public List buscaPokemonsQuery(String busca) { + + String sql = "SELECT * FROM pokemon WHERE nome LIKE ? ORDER BY nome ASC;"; + SQLiteDatabase db = getReadableDatabase(); + String like = "%"+busca+"%"; + Cursor c = db.rawQuery(sql, new String[]{like}); + + List pokemons = new ArrayList(); + + while(c.moveToNext()){ + Pokemon pokemon = new Pokemon(); + pokemon.setId(c.getInt(c.getColumnIndex("id"))); + pokemon.setName(c.getString(c.getColumnIndex("nome"))); + pokemon.setResource_uri(c.getString(c.getColumnIndex("caminho"))); + pokemons.add(pokemon); + } + c.close(); + + return pokemons; + } + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/retrofit/RetrofitInicializador.java b/app/src/main/java/cc/slideworks/pokedex/retrofit/RetrofitInicializador.java new file mode 100644 index 0000000..a9f65ec --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/retrofit/RetrofitInicializador.java @@ -0,0 +1,24 @@ +package cc.slideworks.pokedex.retrofit; + +import cc.slideworks.pokedex.services.PokedexService; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class RetrofitInicializador { + + private final Retrofit retrofit; + + public RetrofitInicializador(){ + + retrofit = new Retrofit.Builder() + .baseUrl(PokedexService.URL) + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + + } + + public PokedexService getPokedexService(){ + return retrofit.create(PokedexService.class); + } + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/services/PokedexService.java b/app/src/main/java/cc/slideworks/pokedex/services/PokedexService.java new file mode 100644 index 0000000..8ae7a2b --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/services/PokedexService.java @@ -0,0 +1,19 @@ +package cc.slideworks.pokedex.services; + +import cc.slideworks.pokedex.PokemonDetalhes; +import cc.slideworks.pokedex.Pokemons; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Path; + +public interface PokedexService { + + public static final String URL = "http://pokeapi.co/"; + + @GET("api/v1/pokedex/1/") + Call lista(); + + @GET("{resource_uri}") + Call pokemon(@Path("resource_uri") String resource_uri); + +} diff --git a/app/src/main/java/cc/slideworks/pokedex/tela_detalhes.java b/app/src/main/java/cc/slideworks/pokedex/tela_detalhes.java new file mode 100644 index 0000000..1a11a23 --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/tela_detalhes.java @@ -0,0 +1,93 @@ +package cc.slideworks.pokedex; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.content.Intent; +import android.util.Log; +import android.widget.ImageView; +import android.widget.TextView; +import com.squareup.picasso.Picasso; +import java.util.List; +import cc.slideworks.pokedex.retrofit.RetrofitInicializador; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class tela_detalhes extends AppCompatActivity { + + private static final String TAG = "acionar"; + private String type = ""; + private String img; + + /*@BindView(R.id.nome_poke) + TextView nome_poke; + + @BindView(R.id.species_poke) + TextView species; + + @BindView(R.id.types_poke) + TextView types_poke; + + @BindView(R.id.id_poke) + TextView id_poke; + + @BindView(R.id.foto_poke) + ImageView foto;*/ + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tela_detalhes); + + //ButterKnife.bind(this); + + Intent intent = getIntent(); + Pokemon pokemon = (Pokemon) intent.getSerializableExtra("pokemon"); + + Call requestPokemons = new RetrofitInicializador().getPokedexService().pokemon(pokemon.getResource_uri()); + + requestPokemons.enqueue(new Callback() { + + @Override + public void onResponse(Call call, Response response) { + + PokemonDetalhes pokemon = response.body(); + + TextView id_poke = (TextView) findViewById(R.id.id_poke); + id_poke.setText("#"+pokemon.getPkdx_id()); + + String imgCompleta = "http://pokeapi.co/"+pokemon.getPicture(); + ImageView foto = (ImageView) findViewById(R.id.foto_poke); + Picasso.with(tela_detalhes.this).load(imgCompleta).into(foto); + + TextView nome_poke = (TextView) findViewById(R.id.nome_poke); + nome_poke.setText(pokemon.getName()); + + TextView species = (TextView) findViewById(R.id.species_poke); + + if(pokemon.getSpecies() != "") { + species.setText(pokemon.getSpecies()); + }else{ + species.setText("Not found"); + } + + List types = pokemon.getTypes(); + + for (Types t : types){ + type = type + t.getName() + " | "; + } + + TextView types_poke = (TextView) findViewById(R.id.types_poke); + types_poke.setText(type); + + } + + @Override + public void onFailure(Call call, Throwable t) { + Log.e(TAG, "Erro de Conexão: " + t.getMessage()); + } + + }); + + } +} diff --git a/app/src/main/java/cc/slideworks/pokedex/tela_principal.java b/app/src/main/java/cc/slideworks/pokedex/tela_principal.java new file mode 100644 index 0000000..cde660e --- /dev/null +++ b/app/src/main/java/cc/slideworks/pokedex/tela_principal.java @@ -0,0 +1,125 @@ +package cc.slideworks.pokedex; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import java.util.List; +import android.content.Intent; +import android.widget.SearchView; +import cc.slideworks.pokedex.adapter.PokemonsAdapter; +import cc.slideworks.pokedex.model.PokemonDAO; +import cc.slideworks.pokedex.retrofit.RetrofitInicializador; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class tela_principal extends AppCompatActivity { + + private static final String TAG = "acionar"; + private ListView ListaPokemons; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tela_principal); + + + Call requestPokemons = new RetrofitInicializador().getPokedexService().lista(); + + requestPokemons.enqueue(new Callback() { + + @Override + public void onResponse(Call call, Response response) { + + if(!response.isSuccessful()){ + Log.i(TAG, "Erro de Resposta: " + response.code()); + }else{ + Pokemons pokemons = response.body(); + + for (Pokemon p : pokemons.pokemon){ + + PokemonDAO dao = new PokemonDAO(tela_principal.this); + dao.insere(p.getName(), p.getResource_uri()); + dao.close(); + + } + + } + + } + + @Override + public void onFailure(Call call, Throwable t) { + Log.e(TAG, "Erro de Conexão: " + t.getMessage()); + } + + }); + + + ListaPokemons = (ListView) findViewById(R.id.lista_pokemons); + + ListaPokemons.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Pokemon pokemon = (Pokemon) ListaPokemons.getItemAtPosition(position); + Intent detalhesIntent = new Intent(tela_principal.this, tela_detalhes.class); + detalhesIntent.putExtra("pokemon", pokemon); + startActivity(detalhesIntent); + } + }); + + listaPokemons(); + + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.menu_search, menu); + MenuItem item = menu.findItem(R.id.menuSearch); + SearchView searchView = (SearchView)item.getActionView(); + + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + buscaPokemons(query); + return false; + } + + @Override + public boolean onQueryTextChange(String query) { + return false; + } + }); + + + return super.onCreateOptionsMenu(menu); + } + + private void listaPokemons() { + PokemonDAO dao = new PokemonDAO(this); + List pokemons = dao.buscaPokemons(); + dao.close(); + + PokemonsAdapter adapter = new PokemonsAdapter(this, pokemons); + ListaPokemons.setAdapter(adapter); + } + + private void buscaPokemons(String busca) { + PokemonDAO dao = new PokemonDAO(this); + List pokemons = dao.buscaPokemonsQuery(busca); + dao.close(); + + PokemonsAdapter adapter = new PokemonsAdapter(this, pokemons); + ListaPokemons.setAdapter(adapter); + } + + +} diff --git a/app/src/main/res/drawable/bg1.png b/app/src/main/res/drawable/bg1.png new file mode 100644 index 0000000..45bc9e2 Binary files /dev/null and b/app/src/main/res/drawable/bg1.png differ diff --git a/app/src/main/res/drawable/bg2.png b/app/src/main/res/drawable/bg2.png new file mode 100644 index 0000000..e0a7f89 Binary files /dev/null and b/app/src/main/res/drawable/bg2.png differ diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png new file mode 100644 index 0000000..3cdca92 Binary files /dev/null and b/app/src/main/res/drawable/logo.png differ diff --git a/app/src/main/res/drawable/poke_lista.png b/app/src/main/res/drawable/poke_lista.png new file mode 100644 index 0000000..71223ce Binary files /dev/null and b/app/src/main/res/drawable/poke_lista.png differ diff --git a/app/src/main/res/drawable/pokeball1.png b/app/src/main/res/drawable/pokeball1.png new file mode 100644 index 0000000..e6bcbb0 Binary files /dev/null and b/app/src/main/res/drawable/pokeball1.png differ diff --git a/app/src/main/res/layout/activity_tela_detalhes.xml b/app/src/main/res/layout/activity_tela_detalhes.xml new file mode 100644 index 0000000..7fb9dd0 --- /dev/null +++ b/app/src/main/res/layout/activity_tela_detalhes.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_tela_principal.xml b/app/src/main/res/layout/activity_tela_principal.xml new file mode 100644 index 0000000..705dd62 --- /dev/null +++ b/app/src/main/res/layout/activity_tela_principal.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/app/src/main/res/layout/lista_pokemons.xml b/app/src/main/res/layout/lista_pokemons.xml new file mode 100644 index 0000000..4cd156f --- /dev/null +++ b/app/src/main/res/layout/lista_pokemons.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_search.xml b/app/src/main/res/menu/menu_search.xml new file mode 100644 index 0000000..a313a12 --- /dev/null +++ b/app/src/main/res/menu/menu_search.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..cde69bc Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..c133a0c Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..bfa42f0 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..324e72c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..aee44e1 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..530bb27 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #f52b2a + #d61415 + #FF4081 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..47c8224 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 16dp + 16dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..5b31be1 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + PokeApp + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5885930 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/test/java/cc/slideworks/pokedex/ExampleUnitTest.java b/app/src/test/java/cc/slideworks/pokedex/ExampleUnitTest.java new file mode 100644 index 0000000..b65d0b5 --- /dev/null +++ b/app/src/test/java/cc/slideworks/pokedex/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package cc.slideworks.pokedex; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..c20bca1 --- /dev/null +++ b/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..aac7c9b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..13372ae Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..04e285f --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Dec 28 10:00:20 PST 2015 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..9d82f78 --- /dev/null +++ b/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app'