Giter Club home page Giter Club logo

quiltviewlibrary's Introduction

QuiltViewLibrary

QuiltView displays views of different sizes in a scrollable grid.

quilt quilt

Dependencies

This library depends on gridlayout_v7 ([email protected]:jacobmoncur/gridlayout_v7.git)

Setup

The QuiltView can be defined by XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res/com.jake.quiltviewsample"
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.jake.quiltview.QuiltView
        android:id="@+id/quilt"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dip"
        app:scrollOrientation="horizontal|vertical" >
    </com.jake.quiltview.QuiltView>

</FrameLayout>

Or programmatically

boolean isVertical = true|false; //defines which direction the QuiltView will scroll: true = Vertical, false = Horizontal
QuiltView quiltView = new QuiltView(context, isVertical); //(QuiltView) findViewById(R.id.quilt);

Adding Children

Children must be added to the QuiltView programmatically as an ArrayList of ImageViews:

ArrayList<ImageView> images = new ArrayList<ImageView>();
for(int i = 0; i < num; i++){
	ImageView image = new ImageView(this.getApplicationContext());
	image.setScaleType(ScaleType.CENTER_CROP);
	image.setImageResource(R.drawable.bg);
	images.add(image);
}
quiltView.addPatchImages(images);

Or an ArrayList of Views

ArrayList<View> views = new ArrayList<View>();
for(int i = 0; i < num; i++){
    FrameLayout patch = new FrameLayout(this.getApplicationContext());
	views.add(patch);
}
quiltView.addPatchViews(views);

Goals for this view

  • Have no empty patches
  • Be sudo-random (lays out the children differently each time)
  • Looks awesome!

TODO

  • Custom Adapter to allow view recycling
  • Be able to define children in XML
  • Adapt better to different screen sizes

quiltviewlibrary's People

Contributors

anpez avatar caseymonc avatar jacobmoncur avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quiltviewlibrary's Issues

CustomAdapter

I using custom adapter with text and imageview but not showing items.

Not working in Tablet devices

Hi,

I have used your gird view in my project it is working fine in phone device but when i try that in tablet it throws me "Verify Error". I already added gridlayout_v7.jar file in my libs. Can you please help me...

License

Hi,

Is there any license for this?

EROR WHEN PROJECT WORKING

hi all EROR STRING :

01-08 09:46:01.033: E/AndroidRuntime(12473): FATAL EXCEPTION: main
01-08 09:46:01.033: E/AndroidRuntime(12473): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.jake.quiltview/com.jake.quiltview.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.jake.quiltview.MainActivity" on path: DexPathList[[zip file "/data/app/com.jake.quiltview-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jake.quiltview-2, /vendor/lib, /system/lib]]
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2232)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.ActivityThread.access$600(ActivityThread.java:156)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.os.Handler.dispatchMessage(Handler.java:99)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.os.Looper.loop(Looper.java:153)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.ActivityThread.main(ActivityThread.java:5299)
01-08 09:46:01.033: E/AndroidRuntime(12473): at java.lang.reflect.Method.invokeNative(Native Method)
01-08 09:46:01.033: E/AndroidRuntime(12473): at java.lang.reflect.Method.invoke(Method.java:511)
01-08 09:46:01.033: E/AndroidRuntime(12473): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-08 09:46:01.033: E/AndroidRuntime(12473): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-08 09:46:01.033: E/AndroidRuntime(12473): at dalvik.system.NativeStart.main(Native Method)
01-08 09:46:01.033: E/AndroidRuntime(12473): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.jake.quiltview.MainActivity" on path: DexPathList[[zip file "/data/app/com.jake.quiltview-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jake.quiltview-2, /vendor/lib, /system/lib]]
01-08 09:46:01.033: E/AndroidRuntime(12473): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
01-08 09:46:01.033: E/AndroidRuntime(12473): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
01-08 09:46:01.033: E/AndroidRuntime(12473): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
01-08 09:46:01.033: E/AndroidRuntime(12473): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2223)
01-08 09:46:01.033: E/AndroidRuntime(12473): ... 11 more

Have empty patches

the grid have empty patches after I loaded several images. What I need to do is arrange different sized images into a fixed rectangular grid without having any empty patches

Dynamic Quilt View

Hi

Can you please throw your thoughts on making a dynamic quilt view? Is it possible with the same libraries?

Sample app on the store

Hi,

It's too bad we can't just download the sample app from the Play Store. Is it on your roadmap?

Click Event !!

Is it possible to answer clicks on different windows in QuiltView ?
Thanks.

Error while running your sample

04-08 12:35:23.902: E/AndroidRuntime(3552): FATAL EXCEPTION: main
04-08 12:35:23.902: E/AndroidRuntime(3552): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jake.quiltviewsample/com.jake.quiltviewsample.MainActivity2}: android.view.InflateException: Binary XML file line #8: Error inflating class com.jake.quiltview.QuiltView
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.os.Looper.loop(Looper.java:137)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.ActivityThread.main(ActivityThread.java:5039)
04-08 12:35:23.902: E/AndroidRuntime(3552): at java.lang.reflect.Method.invokeNative(Native Method)
04-08 12:35:23.902: E/AndroidRuntime(3552): at java.lang.reflect.Method.invoke(Method.java:511)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-08 12:35:23.902: E/AndroidRuntime(3552): at dalvik.system.NativeStart.main(Native Method)
04-08 12:35:23.902: E/AndroidRuntime(3552): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.jake.quiltview.QuiltView
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.Activity.setContentView(Activity.java:1881)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.jake.quiltviewsample.MainActivity2.onCreate(MainActivity2.java:18)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.Activity.performCreate(Activity.java:5104)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-08 12:35:23.902: E/AndroidRuntime(3552): ... 11 more
04-08 12:35:23.902: E/AndroidRuntime(3552): Caused by: java.lang.reflect.InvocationTargetException
04-08 12:35:23.902: E/AndroidRuntime(3552): at java.lang.reflect.Constructor.constructNative(Native Method)
04-08 12:35:23.902: E/AndroidRuntime(3552): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.view.LayoutInflater.createView(LayoutInflater.java:587)
04-08 12:35:23.902: E/AndroidRuntime(3552): ... 22 more
04-08 12:35:23.902: E/AndroidRuntime(3552): Caused by: java.lang.IllegalArgumentException: rowCount must be greater than or equal to the maximum of all grid indices (and spans) defined in the LayoutParams of each child.
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.widget.GridLayout.handleInvalidParams(GridLayout.java:773)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.widget.GridLayout.access$100(GridLayout.java:151)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.widget.GridLayout$Axis.setCount(GridLayout.java:1230)
04-08 12:35:23.902: E/AndroidRuntime(3552): at android.widget.GridLayout.setRowCount(GridLayout.java:368)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.jake.quiltview.QuiltViewBase.setupVertical(QuiltViewBase.java:48)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.jake.quiltview.QuiltViewBase.setup(QuiltViewBase.java:39)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.jake.quiltview.QuiltViewBase.(QuiltViewBase.java:34)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.jake.quiltview.QuiltView.setup(QuiltView.java:58)
04-08 12:35:23.902: E/AndroidRuntime(3552): at com.jake.quiltview.QuiltView.(QuiltView.java:47)
04-08 12:35:23.902: E/AndroidRuntime(3552): ... 25 more

dynamically loaded images don't turn up on the grid

Hi, I am using the ImageLoader class to try and load images from server, but the images don't seem to show up at all, is it that before calling the addPatchImages the image view must contain the loaded image?

Size property

Can you implement size property for children? This property set view size in grid.

Cannot run the sample

I got this exception when try to import and run your sample
01-20 10:17:46.351: E/AndroidRuntime(9934): FATAL EXCEPTION: main 01-20 10:17:46.351: E/AndroidRuntime(9934): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jake.quiltviewsample/com.jake.quiltviewsample.MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.jake.quiltview.QuiltView 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.ActivityThread.access$600(ActivityThread.java:142) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.os.Handler.dispatchMessage(Handler.java:99) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.os.Looper.loop(Looper.java:137) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.ActivityThread.main(ActivityThread.java:4931) 01-20 10:17:46.351: E/AndroidRuntime(9934): at java.lang.reflect.Method.invokeNative(Native Method) 01-20 10:17:46.351: E/AndroidRuntime(9934): at java.lang.reflect.Method.invoke(Method.java:511) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 01-20 10:17:46.351: E/AndroidRuntime(9934): at dalvik.system.NativeStart.main(Native Method) 01-20 10:17:46.351: E/AndroidRuntime(9934): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.jake.quiltview.QuiltView 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:275) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.Activity.setContentView(Activity.java:1867) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.jake.quiltviewsample.MainActivity.onCreate(MainActivity.java:19) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.Activity.performCreate(Activity.java:5008) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139) 01-20 10:17:46.351: E/AndroidRuntime(9934): ... 11 more 01-20 10:17:46.351: E/AndroidRuntime(9934): Caused by: java.lang.reflect.InvocationTargetException 01-20 10:17:46.351: E/AndroidRuntime(9934): at java.lang.reflect.Constructor.constructNative(Native Method) 01-20 10:17:46.351: E/AndroidRuntime(9934): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 01-20 10:17:46.351: E/AndroidRuntime(9934): ... 22 more 01-20 10:17:46.351: E/AndroidRuntime(9934): Caused by: java.lang.NoClassDefFoundError: android.support.v7.gridlayout.R$dimen 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.support.v7.widget.GridLayout.<init>(GridLayout.java:255) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.support.v7.widget.GridLayout.<init>(GridLayout.java:274) 01-20 10:17:46.351: E/AndroidRuntime(9934): at android.support.v7.widget.GridLayout.<init>(GridLayout.java:282) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.jake.quiltview.QuiltViewBase.<init>(QuiltViewBase.java:26) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.jake.quiltview.QuiltView.setup(QuiltView.java:62) 01-20 10:17:46.351: E/AndroidRuntime(9934): at com.jake.quiltview.QuiltView.<init>(QuiltView.java:51) 01-20 10:17:46.351: E/AndroidRuntime(9934): ... 25 more
Can you please provide a runnable APK so that I can enjoy QuiltView UI.

Re-add views

I am using a SwipeRefreshLayout wrapping the QuiltView. But I did not find an API to re-bind the views. If I use removeAllViews() for the ViewGroup class, and add views again. The QuiltView is empty. Any idea for a way out?

Thanks!

Display a defaul Image when the image is loading

I need to display an indication that the image is onLoading so my solution is to setImageDrawable but didn't work.

This is what i had tried :

ArrayList images = new ArrayList();
for(final Photos photo : MainApplication.getPhotos()){
ImageView image = new ImageView(getActivity());
image.setImageDrawable(getActivity().getResources().getDrawable(R.drawable.default_image));
image.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), ImageDisplayerActivity.class);
                intent.putExtra("url",photo.getUrl() );
                getActivity().startActivity(intent);
            }
        });

Using adapters

Hi, how do we use .setAdapter to load the quiltview? The normal addPatchViews is giving me oom error..

When I set an array adapter, the quiltview doesn't get loaded. When I print log, getView in the adapter gets called though..

Native gradle support

I'd like to use your project as a submodule. Unfortunately I have to download the repo and 'gradlelize' it. Could be solved, if there was a maven dependency somewhere in space. So depends on #4

License?

What license is QuiltViewLibrary released under? There doesn't seem to be any identification of the sort in the source.

No longer on jitpack.io

Hi,

This library is not present on Jitpack any longer. I would like to upload it there if you have no objection to my doing that.

License

Hi!

I want to use your QuiltView Library for an app for my company, but I couldn't find the license of it.

Is it allowed for commercial use?

Adapter

Does this supports recycling of views?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.