Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .idea/.name

This file was deleted.

8 changes: 1 addition & 7 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified APKs/yamsd.apk
Binary file not shown.
8 changes: 6 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ dependencies {
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.json:json:20140107'

compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.google.guava:guava:19.0'
}
10 changes: 1 addition & 9 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

<application
android:allowBackup="true"
Expand All @@ -21,15 +22,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ArtistActivity"
android:label="@string/title_activity_artist"
android:parentActivityName=".ListOfArtistsActivity"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.android.yamsd.ListOfArtistsActivity" />
</activity>
</application>

</manifest>
97 changes: 97 additions & 0 deletions app/src/main/java/com/example/android/yamsd/AboutFragment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.example.android.yamsd;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

import static com.google.common.base.Preconditions.checkNotNull;


public class AboutFragment extends Fragment {

public AboutFragment() {
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чо за дырки в коде?
Один перенос для разделения методов - OK. Два - перебор.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Думал таким образом разделять методы. Там внутри разделяю, так сказать, логические блоки одним переносом.

public static AboutFragment newInstance() {
return new AboutFragment();
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
CacheAndListBuffer
.getCacheAndListBuffer(
getActivity()
)
.updateArtists(true);
return true;
case R.id.action_about:
AboutFragment aboutFragment =
AboutFragment.newInstance();

android.support.v4.app.FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();

fragmentTransaction.replace(
R.id.fragment_container,
aboutFragment
);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

return true;
case R.id.action_feedback:
EmailSender.sendMessage(getContext());
return true;
default:
return super.onOptionsItemSelected(item);
}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_about, container, false);
View sendEmailButton =
rootView.findViewById(R.id.SEND_EMAIL_BUTTON);

sendEmailButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
EmailSender.sendMessage(getContext());
}
}
);
return rootView;

}


@Override
public void onResume() {
super.onResume();
checkNotNull(((AppCompatActivity) getActivity())
.getSupportActionBar())
.setTitle("О приложении");
}
}
31 changes: 0 additions & 31 deletions app/src/main/java/com/example/android/yamsd/ArtistActivity.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
package com.example.android.yamsd;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

import com.example.android.yamsd.ArtistsData.Artist;
import com.squareup.picasso.Picasso;

import static com.google.common.base.Preconditions.checkNotNull;

import java.io.IOException;
import java.net.URL;
/**
* Фрагмент с информацией об одном артисте.
*/
Expand All @@ -22,41 +23,96 @@ public class ArtistActivityFragment extends Fragment {

private String LOG_TAG = getClass().getSimpleName();

Artist artist;


public static ArtistActivityFragment newInstance(int index) {
ArtistActivityFragment artistActivityFragment =
new ArtistActivityFragment();

Bundle args = new Bundle();
args.putInt("index", index);
artistActivityFragment.setArguments(args);

return artistActivityFragment;
}


public ArtistActivityFragment() {
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

try {

Intent artistInfoIntent = getActivity().getIntent();
Artist artist =
new Artist(
artistInfoIntent.getStringExtra("name"),
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не нужный отладочный код.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Странно, я думал, что я его удалил.

super.onCreateOptionsMenu(menu, inflater);
}

artistInfoIntent.getStringArrayExtra("genres"),

artistInfoIntent.getIntExtra("albums", 0),
artistInfoIntent.getIntExtra("tracks", 0),
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
CacheAndListBuffer
.getCacheAndListBuffer(
getActivity()
)
.updateArtists(true);
return true;
case R.id.action_about:
AboutFragment aboutFragment =
AboutFragment.newInstance();

getFragmentManager()
.beginTransaction()
.replace(
R.id.fragment_container,
aboutFragment
)
.addToBackStack(null)
.commit();

return true;

case R.id.action_feedback:
EmailSender.sendMessage(getContext());
return true;

default:
return super.onOptionsItemSelected(item);
}
}

artistInfoIntent.getStringExtra("description"),

artistInfoIntent.getStringExtra("bigCover")
);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

return loadArtistData(artist, inflater).getRootView();
} catch (NullPointerException e) {
Log.e(
LOG_TAG,
"Null Pointer Exception while creating view: " + e
);
}
int artistInfoIndex = getArguments().getInt("index", 0);
artist =
CacheAndListBuffer
.getCacheAndListBuffer(
getActivity()
)
.getArtists()
.get(artistInfoIndex);

return null;
return loadArtistData(artist, inflater).getRootView();
}


@Override
public void onResume() {
super.onResume();
checkNotNull(((AppCompatActivity) getActivity())
.getSupportActionBar())
.setTitle(artist.getName());
}


Expand All @@ -70,48 +126,14 @@ private ArtistViewHolder loadArtistData(
"Artist",
artist
);
new loadBigCoverTask(viewHolder).execute(artist);

Picasso
.with(getContext())
.load(artist.getBigCoverUrlString())
.into(viewHolder.cover);

return viewHolder;
}


private class loadBigCoverTask
extends AsyncTask<Artist, Void, Bitmap> {
private String LOG_TAG = getClass().getSimpleName();

Artist artist;
ArtistViewHolder viewHolder;


public loadBigCoverTask(ArtistViewHolder viewHolder) {
this.viewHolder = viewHolder;
}


@Override
protected Bitmap doInBackground(Artist... params) {
try {
artist = params[0];

return (Bitmap) Utility.downloadData(
new URL(params[0].getBigCoverUrlString()),
"bitmap"
);

} catch (IOException e) {
Log.e(LOG_TAG, "Error while loading image: " + e);
} catch (NullPointerException e){
Log.e(LOG_TAG, "Null pointer while loading image: " + e);
}

return null;
}


@Override
protected void onPostExecute(Bitmap bitmap) {
viewHolder.setCoverBitmap(bitmap);
}
}
}
Loading