Permalink
Browse files

first commit, but it works!

  • Loading branch information...
0 parents commit 4d8654e9bd5f8e24da9c5ad9ac26dd50bc175647 @ghk committed Jul 3, 2011
@@ -0,0 +1,17 @@
+.metadata
+tmp/**
+.DS_Store
+*.tmp
+*.bak
+tmp/**/*
+*.swp
+*~.nib
+Thumbs.db
+Desktop.ini
+*~
+*.apk
+bin
+gen
+local.properties
+*.jar
+.classpath
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>comicshelf</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.kaulahcintaku.comicshelf"
+ android:versionCode="1"
+ android:versionName="1.0">
+<supports-screens android:anyDensity="true" android:largeScreens="true" android:resizeable="true" android:normalScreens="true" android:smallScreens="true"></supports-screens>
+
+
+ <application android:icon="@drawable/icon" android:label="@string/app_name">
+ <activity android:name=".SeriesActivity"
+ 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>
@@ -0,0 +1,5 @@
+Android comic library for perfect viewer https://market.android.com/details?id=com.rookiestudio.perfectviewer&hl=en
+
+Using coverflow widget: http://www.inter-fuser.com/2010/02/android-coverflow-widget-v2.html
+
+Icons by: http://www.customicondesign.com/
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "build.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-8
@@ -0,0 +1,36 @@
+-optimizationpasses 5
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-dontpreverify
+-verbose
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class com.android.vending.licensing.ILicensingService
+
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+-keepclasseswithmembernames class * {
+ public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+-keepclasseswithmembernames class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keep class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator *;
+}
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <com.kaulahcintaku.comicshelf.CoverFlow android:id="@+id/coverflow"
+ android:layout_width="fill_parent" android:layout_height="wrap_content"
+ android:layout_weight="1" />
+
+ <LinearLayout android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <LinearLayout android:layout_width="fill_parent"
+ android:layout_height="match_parent" android:padding="6dip">
+ <Button android:id="@+id/open"
+ android:layout_width="100dip"
+ android:layout_height="100dip"
+ android:layout_marginRight="6dip"
+ android:text="Open"
+ android:layout_gravity="center_vertical" />
+ <LinearLayout android:id="@+id/content"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <TextView android:id="@+id/title" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:gravity="right|center_vertical"
+ android:text="Title" android:textStyle="bold" android:textSize="18dip"
+ android:paddingBottom="6dip" />
+ <TextView android:id="@+id/detail" android:layout_width="match_parent"
+ android:layout_height="wrap_content" android:gravity="right|center_vertical"
+ android:paddingBottom="6dip" android:text="Detail" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="hello">Hello World, SeriesActivity!</string>
+ <string name="app_name">Comic Shelf</string>
+</resources>
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2010 Neil Davies
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This code is base on the Android Gallery widget and was Created
+ * by Neil Davies neild001 'at' gmail dot com to be a Coverflow widget
+ *
+ * @author Neil Davies
+ */
+package com.kaulahcintaku.comicshelf;
+
+import android.content.Context;
+import android.graphics.Camera;
+import android.graphics.Matrix;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.animation.Transformation;
+import android.widget.Gallery;
+import android.widget.ImageView;
+
+public class CoverFlow extends Gallery {
+
+ /**
+ * Graphics Camera used for transforming the matrix of ImageViews
+ */
+ private Camera mCamera = new Camera();
+
+ /**
+ * The maximum angle the Child ImageView will be rotated by
+ */
+ private int mMaxRotationAngle = 30;
+
+ /**
+ * The maximum zoom on the centre Child
+ */
+ private int mMaxZoom = -90;
+
+ private float mZoom = -310.0f;
+
+ /**
+ * The Centre of the Coverflow
+ */
+ private int mCoveflowCenter;
+
+ public CoverFlow(Context context) {
+ super(context);
+ this.setStaticTransformationsEnabled(true);
+ }
+
+ public CoverFlow(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ this.setStaticTransformationsEnabled(true);
+ }
+
+ public CoverFlow(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ this.setStaticTransformationsEnabled(true);
+ }
+
+ /**
+ * Get the max rotational angle of the image
+ *
+ * @return the mMaxRotationAngle
+ */
+ public int getMaxRotationAngle() {
+ return mMaxRotationAngle;
+ }
+
+ /**
+ * Set the max rotational angle of each image
+ *
+ * @param maxRotationAngle
+ * the mMaxRotationAngle to set
+ */
+ public void setMaxRotationAngle(int maxRotationAngle) {
+ mMaxRotationAngle = maxRotationAngle;
+ }
+
+ /**
+ * Get the Max zoom of the centre image
+ *
+ * @return the mMaxZoom
+ */
+ public int getMaxZoom() {
+ return mMaxZoom;
+ }
+
+ /**
+ * Set the max zoom of the centre image
+ *
+ * @param maxZoom
+ * the mMaxZoom to set
+ */
+ public void setMaxZoom(int maxZoom) {
+ mMaxZoom = maxZoom;
+ }
+
+ /**
+ * Get the Centre of the Coverflow
+ *
+ * @return The centre of this Coverflow.
+ */
+ private int getCenterOfCoverflow() {
+ return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2
+ + getPaddingLeft();
+ }
+
+ /**
+ * Get the Centre of the View
+ *
+ * @return The centre of the given view.
+ */
+ private static int getCenterOfView(View view) {
+ return view.getLeft() + view.getWidth() / 2;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see #setStaticTransformationsEnabled(boolean)
+ */
+ protected boolean getChildStaticTransformation(View child, Transformation t) {
+
+ final int childCenter = getCenterOfView(child);
+ final int childWidth = child.getWidth();
+ int rotationAngle = 0;
+
+ t.clear();
+ t.setTransformationType(Transformation.TYPE_MATRIX);
+
+ if (childCenter == mCoveflowCenter) {
+ transformImageBitmap((ImageView) child, t, 0);
+ } else {
+ rotationAngle = (int) (((float) (mCoveflowCenter - childCenter) / childWidth) * mMaxRotationAngle);
+ if (Math.abs(rotationAngle) > mMaxRotationAngle) {
+ rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle
+ : mMaxRotationAngle;
+ }
+ transformImageBitmap((ImageView) child, t, rotationAngle);
+ }
+
+ return true;
+ }
+
+ /**
+ * This is called during layout when the size of this view has changed. If
+ * you were just added to the view hierarchy, you're called with the old
+ * values of 0.
+ *
+ * @param w
+ * Current width of this view.
+ * @param h
+ * Current height of this view.
+ * @param oldw
+ * Old width of this view.
+ * @param oldh
+ * Old height of this view.
+ */
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ mCoveflowCenter = getCenterOfCoverflow();
+ super.onSizeChanged(w, h, oldw, oldh);
+ }
+
+ /**
+ * Transform the Image Bitmap by the Angle passed
+ *
+ * @param imageView
+ * ImageView the ImageView whose bitmap we want to rotate
+ * @param t
+ * transformation
+ * @param rotationAngle
+ * the Angle by which to rotate the Bitmap
+ */
+ private void transformImageBitmap(ImageView child, Transformation t,
+ int rotationAngle) {
+ mCamera.save();
+ final Matrix imageMatrix = t.getMatrix();
+ ;
+ final int imageHeight = child.getLayoutParams().height;
+ ;
+ final int imageWidth = child.getLayoutParams().width;
+ final int rotation = Math.abs(rotationAngle);
+
+ mCamera.translate(0.0f, -10f, mZoom);
+
+ // As the angle of the view gets less, zoom in
+ if (rotation < mMaxRotationAngle) {
+ float zoomAmount = (float) (mMaxZoom + (rotation * 1.5));
+ mCamera.translate(0.0f, 0.0f, zoomAmount);
+ }
+
+ mCamera.rotateY(rotationAngle);
+ mCamera.getMatrix(imageMatrix);
+ imageMatrix.preTranslate(-(imageWidth / 2), -(imageHeight / 2));
+ imageMatrix.postTranslate((imageWidth / 2), (imageHeight / 2));
+ mCamera.restore();
+ }
+}
Oops, something went wrong.

0 comments on commit 4d8654e

Please sign in to comment.