Coder Social home page Coder Social logo

changeloglib's People

Contributors

ashuba avatar btimofeev avatar gabrielemariotti avatar johnjohndoe avatar marcinkunert avatar pylersm avatar stonos 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

changeloglib's Issues

Need Hyperlink

[a href="domain.com"]more[/a] should be really helpful.

also don't know about how to change the color for some tex like [b color="#e4e4e4"]new[/b] Notification.

AppCompat 23.2.0

Ciao,

Aggiornando le librerie Appcompat etc di Google alla versione 23.2.0, le voci del changelog appaiono sparse a grande distanza una dall'altra.

Il mio codice è questo:

<it.gmariotti.changelibs.library.view.ChangeLogRecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            risuscito:changeLogFileResourceId="@raw/changelog_full"
            risuscito:rowHeaderLayoutId="@layout/changelogrowheader_material_layout"
            risuscito:rowLayoutId="@layout/changelogrow_material_layout"
            android:id="@+id/aboutText" />

Grazie in anticipo.

Option to "Never show again"

While some users may find the changelog informative and interesting, I find that some users get annoyed by changelog popups when frequent updates occur.

Would it be possible to include a "Never show again" option in the changelog dialog?

Thanks for the consideration and the awesome lib.

About first run?

Hey is there a function that determines if dialog has shown before to user?

I've found another changelob lib which has that function https://github.com/cketti/ckChangeLog

kind a;

ChangeLog cl = new ChangeLog(this);
if (cl.isFirstRun()) {
cl.getLogDialog().show();
}

Thanks.

Nullpointer when compiling with "support:recyclerview-v7:24.0.0-alpha1"

java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.

&lt; in xml not working

Adding &lt; in the changelog text is not working... Using a CDATA approach neither...

The changelog line with an &lt; in it is always cut of at the position of &lt;...

Any other way to get a < in my changelog?

ProGuard config

After enabling ProGuard, all the changelog info disappears. Any tips on setting up ProGuard configuration?

Possibility to create hierarchie in changelog

It would be great to be able to create a simple hierarchie in the changelog, e.g.

  • UI
    • Using the Design SUpport Library

The HTML representation I have in mind talking about an hierarchie would look like

<ul>
    <li>
        <b>UI</b>
    </li>
    <ul>
        <li>Using the SUpport Design Library</li>
    </ul>
</ul>

The bold formatting could be done with the given possibilities using [b] [/b] but it would be great to get the idention feature.
Maybe by introducing a new tag <changelogsubtext></changelogsubtext>.

Add support for gradle auto-creating missing changelogversion

It would be really useful if, when building the app, the changelog.xml could be checked to see if it already contains the changelogversion for the version being built. If not, create a stub with the versionName and changeDate auto-filled.

I know this wouldn't be perfect, because you would essentially need to run the build twice. Another problem is that if, like me, you use "dev" of "b1" etc suffixes in the versionName then you probably don't want a changelogversion for each of those.

Anyway, just a thought!

NPE with 23.2.0 in android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left

As reported by Zeliret in #28:

For me there is another problem. I have a crash:

java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
                                                                 at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
                                                                 at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
                                                                 at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
                                                                 at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
                                                                 at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
                                                                 at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
                                                                 at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
                                                                 at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                 at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                 at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                                 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                                 at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                 at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                 at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                 at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                                 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                                 at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                 at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                 at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
                                                                 at android.view.View.layout(View.java:16636)
                                                                 at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                 at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
                                                                 at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
                                                                 at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                                 at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                                 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                 at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                 at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                                 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                 at android.os.Handler.handleCallback(Handler.java:739)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                 at android.os.Looper.loop(Looper.java:148)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.jav

My layout:

<it.gmariotti.changelibs.library.view.ChangeLogRecyclerView
    android:id="@+id/view"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clipToPadding="false"
    android:paddingBottom="@dimen/padding_narrow"
    android:paddingTop="@dimen/padding_narrow"
    app:rowHeaderLayoutId="@layout/header_changelog"
    app:rowLayoutId="@layout/item_changelog"/>

Feature request: firstRun method

First: Thanks for your great library!

One feature, developers want to provide using your library, might be to auto show the changelog if a new version is installed. Therefore, it is necessary to determine the installed version and to compare it. In my opinion this is a common use case and should be part of this lib.

My feature suggestion:
Please provide a function e.g. firstRun() which returns true if the app in the current version is started the first time. (other ways to implement this are of course ok, too. e.g. a static constructor autoFirstRun() which shows the changelog only if a new version is installed).

To inspire, you can take a look at the firstRun method of this lib: See here

Thanks!

Not compatible with aapt2

This library crashes when used together with aapt2 since the changeling.xml reference is removed.

Show Dialog

How to show up the Dialog??????????!???!!!!!!! My app crashes !

Feature request

Hi,

Thanks for the great library. I like it because it very useful.
But it would be great to decrease minSdkVersion attribute to 8 to support max range of devices. Is this possible?
Thanks.

NoClassDefFoundError

Hi, I get this error, here is the logcat. Did I do something wrong? I did as in your build.md

01-06 15:42:13.457: E/AndroidRuntime(4221): FATAL EXCEPTION: main
01-06 15:42:13.457: E/AndroidRuntime(4221): android.view.InflateException: Binary XML file line #2: Error inflating class it.gmariotti.changelibs.library.view.ChangeLogListView
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.huteri.monas.BaseActivity.onOptionsItemSelected(BaseActivity.java:53)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.huteri.monas.MainActivity.onOptionsItemSelected(MainActivity.java:198)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.support.v4.app.Watson.onMenuItemSelected(Watson.java:118)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.actionbarsherlock.ActionBarSherlock.callbackOptionsItemSelected(ActionBarSherlock.java:604)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchOptionsItemSelected(ActionBarSherlockNative.java:92)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:204)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:958)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AbsListView$1.run(AbsListView.java:3529)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.os.Handler.handleCallback(Handler.java:615)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.os.Handler.dispatchMessage(Handler.java:92)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.os.Looper.loop(Looper.java:137)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.app.ActivityThread.main(ActivityThread.java:4745)
01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Method.invokeNative(Native Method)
01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Method.invoke(Method.java:511)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-06 15:42:13.457: E/AndroidRuntime(4221): at dalvik.system.NativeStart.main(Native Method)
01-06 15:42:13.457: E/AndroidRuntime(4221): Caused by: java.lang.reflect.InvocationTargetException
01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Constructor.constructNative(Native Method)
01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.createView(LayoutInflater.java:587)
01-06 15:42:13.457: E/AndroidRuntime(4221): ... 28 more
01-06 15:42:13.457: E/AndroidRuntime(4221): Caused by: java.lang.NoClassDefFoundError: it.gmariotti.changelibs.R$styleable
01-06 15:42:13.457: E/AndroidRuntime(4221): at it.gmariotti.changelibs.library.view.ChangeLogListView.initAttrs(ChangeLogListView.java:105)
01-06 15:42:13.457: E/AndroidRuntime(4221): at it.gmariotti.changelibs.library.view.ChangeLogListView.init(ChangeLogListView.java:89)
01-06 15:42:13.457: E/AndroidRuntime(4221): at it.gmariotti.changelibs.library.view.ChangeLogListView.(ChangeLogListView.java:69)
01-06 15:42:13.457: E/AndroidRuntime(4221): ... 31 more

Spacing on items

When I make a new activity, after each item there is a large gap between one item and the next

allowBackup=true necessary?

Hi,

Nice work on this!

I have a question, is the android:allowBackup = true necessary in your AndroidManifest?

It's causing a manifest merging failed on my own project (which is set to false.. company policy)

Library still supported?

Pull requests are not merged so I'm asking this question...

I still like the lib and added following (or am adding this currently):

  • support filtering logs (like show only logs that have not been shown yet)
  • support custom log formatter in code

And I would make a pull request then...

Library not found

Hi,

Hi tried to add the dependency to the latest version, but resolver is failing:
image

Thanks in advance
Marcello

No empty view

Hi,

Sometime it takes long to parse the changelog file from rae resources and there is no empty view to display (i.e.: a progressbar). Could that be added?

M

Move color definitions to attrs

Currently the colors are held in colors.xml and we can override them by defining them ourselves again in colors.xml.
This works ok as long as you're only using one theme. I've got two themes in my app (dark/light). I define all my colors as attributes and can define them per theme in styles.xml.
I really like your library and it works great as long as I use my light theme (light background, your default colors). When I switch to my dark theme I get a dark background and your default colors.

Now, overriding your colors in colors.xml will force me to use a single text color for all themes. If you defined your colors as attributes, I could override them per theme.

There's a good article about this here:
http://daniel-codes.blogspot.co.uk/2011/03/custom-styles-in-android-libraries.html
that explains how to make a library "themable".

You'd basically get:

<attr name="chglib_material_color_text_1" format="reference|color"/>

And you can use it in your library as

android:textColor="?attr/chglib_material_color_text_1"

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.