Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
Signed-off-by: fython <fython@163.com>
  • Loading branch information
fython committed May 27, 2015
0 parents commit b9e1d5f
Show file tree
Hide file tree
Showing 34 changed files with 1,235 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.gradle
/local.properties
/.idea
.DS_Store
/build

*.iml
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
29 changes: 29 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
applicationId "moe.feng.nhentai"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'com.android.support:support-v13:22.1.0'
compile ('com.github.florent37:materialviewpager:1.0.4@aar'){
transitive = true
}
}
17 changes: 17 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in E:\Feng\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 *;
#}
21 changes: 21 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="moe.feng.nhentai" >

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
17 changes: 17 additions & 0 deletions app/src/main/java/moe/feng/nhentai/model/Book.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package moe.feng.nhentai.model;

public class Book {

/** 必须获取到的数据 */
public String title, other, bookId;

/** 次要数据 */
public String previewImageUrl;

public Book(String title, String other, String bookId) {
this.title = title;
this.other = other;
this.bookId = bookId;
}

}
48 changes: 48 additions & 0 deletions app/src/main/java/moe/feng/nhentai/ui/MainActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package moe.feng.nhentai.ui;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

import com.github.florent37.materialviewpager.MaterialViewPager;

import moe.feng.nhentai.R;
import moe.feng.nhentai.ui.adapter.HomePagerAdapter;

public class MainActivity extends AppCompatActivity {

private MaterialViewPager mPager;
private HomePagerAdapter mPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mPager = (MaterialViewPager) findViewById(R.id.view_pager);
Toolbar toolbar = mPager.getToolbar();
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(true);
}

mPagerAdapter = new HomePagerAdapter(getFragmentManager());
mPager.getViewPager().setAdapter(mPagerAdapter);
mPager.getPagerTitleStrip().setViewPager(mPager.getViewPager());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
return super.onOptionsItemSelected(item);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package moe.feng.nhentai.ui.adapter;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

import moe.feng.nhentai.R;
import moe.feng.nhentai.model.Book;
import moe.feng.nhentai.ui.common.AbsRecyclerViewAdapter;
import moe.feng.nhentai.util.ColorGenerator;
import moe.feng.nhentai.util.TextDrawable;

public class BookListRecyclerAdapter extends AbsRecyclerViewAdapter {

private ArrayList<Book> data;

private ColorGenerator mColorGenerator;

public BookListRecyclerAdapter(ArrayList<Book> data) {
super();
this.data = data;
mColorGenerator = ColorGenerator.MATERIAL;
}

@Override
public ClickableViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_item_book_card, viewGroup, false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ClickableViewHolder holder, int position) {
if (holder instanceof ViewHolder) {
ViewHolder mHolder = (ViewHolder) holder;
mHolder.mTitleTextView.setText(data.get(position).title);
mHolder.mOtherTextView.setText(data.get(position).other);
String previewImageUrl = data.get(position).previewImageUrl;
if (previewImageUrl != null) {
// TODO 显示本子的预览图
} else {
int color = mColorGenerator.getColor(data.get(position).title);
TextDrawable drawable = TextDrawable.builder().buildRound(data.get(position).title.substring(0, 1), color);
mHolder.mPreviewImageView.setImageDrawable(drawable);
}
}
}

@Override
public int getItemCount() {
return data.size();
}

public class ViewHolder extends ClickableViewHolder {

public ImageView mPreviewImageView;
public TextView mTitleTextView, mOtherTextView;

public ViewHolder(View itemView) {
super(itemView);
mPreviewImageView = (ImageView) itemView.findViewById(R.id.book_preview);
mTitleTextView = (TextView) itemView.findViewById(R.id.book_title);
mOtherTextView = (TextView) itemView.findViewById(R.id.book_other);
}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package moe.feng.nhentai.ui.adapter;

import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentPagerAdapter;

import moe.feng.nhentai.ui.fragment.DownloadManagerFragment;
import moe.feng.nhentai.ui.fragment.FavoriteFragment;
import moe.feng.nhentai.ui.fragment.HomeFragment;

public class HomePagerAdapter extends FragmentPagerAdapter {

private HomeFragment homeFragment;
private DownloadManagerFragment downloadManagerFragment;
private FavoriteFragment favoriteFragment;

public HomePagerAdapter(FragmentManager fm) {
super(fm);
homeFragment = new HomeFragment();
downloadManagerFragment = new DownloadManagerFragment();
favoriteFragment = new FavoriteFragment();
}

@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
return homeFragment;
case 1:
return downloadManagerFragment;
case 2:
return favoriteFragment;
default:
return null;
}
}

@Override
public int getCount() {
return 3;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package moe.feng.nhentai.ui.common;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;

public abstract class AbsRecyclerViewAdapter extends RecyclerView.Adapter<AbsRecyclerViewAdapter.ClickableViewHolder> {

private Context context;

public AbsRecyclerViewAdapter() {
}

public interface OnItemClickListener {
public void onItemClicked(int position);
}

public interface OnItemLongClickListener {
public boolean onItemLongClicked(int position);
}

private OnItemClickListener itemClickListener;
private OnItemLongClickListener itemLongClickListener;

public void setOnItemClickListener(OnItemClickListener listener) {
this.itemClickListener = listener;
}

public void setOnItemLongClickListener(OnItemLongClickListener listener) {
this.itemLongClickListener = listener;
}

public void bindContext(Context context) {
this.context = context;
}

public Context getContext() {
return this.context;
}

@Override
public void onBindViewHolder(ClickableViewHolder holder, final int position) {
holder.getParentView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (itemClickListener != null) {
itemClickListener.onItemClicked(position);
}
}
});
holder.getParentView().setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (itemLongClickListener != null) {
return itemLongClickListener.onItemLongClicked(position);
} else {
return false;
}
}
});
}

public class ClickableViewHolder extends RecyclerView.ViewHolder {

private View parentView;

public ClickableViewHolder(View itemView) {
super(itemView);
this.parentView = itemView;
}

public View getParentView() {
return parentView;
}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package moe.feng.nhentai.ui.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import moe.feng.nhentai.R;

public class DownloadManagerFragment extends Fragment {

private RecyclerView mRecyclerView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state) {
View view = inflater.inflate(R.layout.fragment_home, container, false);

mRecyclerView = (RecyclerView) view.findViewById(R.id.recylcer_view);

return view;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package moe.feng.nhentai.ui.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import moe.feng.nhentai.R;

public class FavoriteFragment extends Fragment {

private RecyclerView mRecyclerView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state) {
View view = inflater.inflate(R.layout.fragment_home, container, false);

mRecyclerView = (RecyclerView) view.findViewById(R.id.recylcer_view);

return view;
}

}
Loading

0 comments on commit b9e1d5f

Please sign in to comment.