{"id":18270165,"url":"https://github.com/skyfe79/FAImageView","last_synced_at":"2025-04-04T23:31:44.816Z","repository":{"id":137746255,"uuid":"44744801","full_name":"skyfe79/FAImageView","owner":"skyfe79","description":"FAImageView is a Frame Animation ImageView for Android.","archived":false,"fork":false,"pushed_at":"2016-08-12T03:39:21.000Z","size":1932,"stargazers_count":189,"open_issues_count":1,"forks_count":39,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-20T20:17:54.030Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skyfe79.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-10-22T12:51:15.000Z","updated_at":"2024-10-10T08:03:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"bcfdab39-e87b-40a6-b408-287be32ba628","html_url":"https://github.com/skyfe79/FAImageView","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyfe79%2FFAImageView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyfe79%2FFAImageView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyfe79%2FFAImageView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skyfe79%2FFAImageView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skyfe79","download_url":"https://codeload.github.com/skyfe79/FAImageView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266476,"owners_count":20910831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T11:38:21.454Z","updated_at":"2025-04-04T23:31:44.797Z","avatar_url":"https://github.com/skyfe79.png","language":"Java","readme":"# FAImageView\n\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-FAImageView-green.svg?style=flat)](https://android-arsenal.com/details/1/2682)\n\nFAImageView is a Frame Animation ImageView for Android. You can set multiple frame images and start frame animation like UIImageView in iOS. You can animate multiple image like below!\n\n![](FAImageView.gif)\n\n## Setup Gradle\n\n```groovy\ndependencies {\n\t...\n    compile 'kr.pe.burt.android.lib:faimageview:0.0.8'\n}\n```\n\n## Usages\n\nDeclare FAImageView widget in the layout xml file.\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cLinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:paddingLeft=\"@dimen/activity_horizontal_margin\"\n    android:paddingRight=\"@dimen/activity_horizontal_margin\"\n    android:paddingTop=\"@dimen/activity_vertical_margin\"\n    android:paddingBottom=\"@dimen/activity_vertical_margin\"\n    android:orientation=\"vertical\"\n    tools:context=\".MainActivity\"\n    \u003e\n\n    \u003ckr.pe.burt.android.lib.faimageview.FAImageView\n        android:id=\"@+id/faimageview1\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"0dp\"\n        android:layout_weight=\"1\"/\u003e\n\n\n    \u003ckr.pe.burt.android.lib.faimageview.FAImageView\n        android:id=\"@+id/faimageview2\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"0dp\"\n        android:layout_weight=\"1\"/\u003e\n\u003c/LinearLayout\u003e\n```\n\nSet the options whatever you want\n\n```java\npublic class MainActivity extends AppCompatActivity {\n\n    FAImageView faImageView1, faImageView2;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n\n        faImageView1 = (FAImageView)findViewById(R.id.faimageview1);\n        faImageView1.setInterval(30);\n        faImageView1.setLoop(true);\n        faImageView1.addImageFrame(R.drawable.frame01);\n        faImageView1.addImageFrame(R.drawable.frame02);\n        faImageView1.addImageFrame(R.drawable.frame03);\n        faImageView1.addImageFrame(R.drawable.frame04);\n        faImageView1.addImageFrame(R.drawable.frame05);\n        faImageView1.addImageFrame(R.drawable.frame06);\n        faImageView1.addImageFrame(R.drawable.frame07);\n        faImageView1.addImageFrame(R.drawable.frame08);\n        faImageView1.addImageFrame(R.drawable.frame09);\n        faImageView1.addImageFrame(R.drawable.frame10);\n\n\n        faImageView2 = (FAImageView)findViewById(R.id.faimageview2);\n        faImageView2.setInterval(100);\n        faImageView2.setLoop(true);\n        faImageView2.addImageFrame(R.drawable.frame01);\n        faImageView2.addImageFrame(R.drawable.frame02);\n        faImageView2.addImageFrame(R.drawable.frame03);\n        faImageView2.addImageFrame(R.drawable.frame04);\n        faImageView2.addImageFrame(R.drawable.frame05);\n        faImageView2.addImageFrame(R.drawable.frame06);\n        faImageView2.addImageFrame(R.drawable.frame07);\n        faImageView2.addImageFrame(R.drawable.frame08);\n        faImageView2.addImageFrame(R.drawable.frame09);\n        faImageView2.addImageFrame(R.drawable.frame10);\n\n    }\n\n    @Override\n    protected void onResume() {\n        super.onResume();\n        faImageView1.startAnimation();\n        faImageView2.startAnimation();\n    }\n\n    @Override\n    protected void onPause() {\n        super.onPause();\n        faImageView1.stopAnimation();\n        faImageView2.stopAnimation();\n    }\n}\n```\n## Callbacks\n\nFAImageView provides some listeners for animation event.\n\n * for listening to animation start.\n  * OnStartAnimationListener\n * for listening to animation completion.\n  * OnFinishAnimationListener\n * for listening to animation frame change event\n  * OnFrameChangedListener\n\n```java\nfaImageView.setOnStartAnimationListener(new FAImageView.OnStartAnimationListener() {\n    @Override\n    public void onStartAnimation() {\n        Log.v(\"FAImageView\", \"Animation started\");\n    }\n});\n\nfaImageView.setOnFinishAnimationListener(new FAImageView.OnFinishAnimationListener() {\n    @Override\n    public void onFinishAnimation(boolean isLoopAnimation) {\n        if(isLoopAnimation) {\n            Log.v(\"FAImageView\", \"finished an animation cycle.\");\n        } else {\n            Log.v(\"FAImageView\", \"Animation is completed\");\n        }\n    }\n});\n\nfaImageView.setOnFrameChangedListener(new FAImageView.OnFrameChangedListener() {\n    @Override\n    public void onFrameChanged(int index) {\n        Log.v(\"FAImageView\", String.format(\"frameIndex : %d\", index));\n    }\n});\n```  \t\n\n## APIs\n\n* setInterval(int milli)\n * set frame interval for animation in milli seconds\n* addImageFrame(int resId)\n* addImageFrame(Drawable drawable)\n* addImageFrame(Bitmap bitmap)\n * add an Image Frame\n* setLoop(boolean loop)\n * If you want to animate infinitely set true or false. Default value is false.\n* setRestoreFirstFrameWhenFinishAnimation(boolean restore)\n * If you want to restore the first frame when animation is finished, set true or false.\n* setAnimationRepeatCount(int animationRepeatCount)\n * Only If your animation is not infinity, this value is valuable.       \n* startAnimation()\n * start animation\n* stopAnimation\n * stop animation\n* isAnimating\n * check it's now animating   \n* reset\n * clear all resources and stop animation.\n\n   \n## MIT License\n\nThe MIT License\n\nCopyright © 2015 Sungcheol Kim, http://github.com/skyfe79/FAImageView\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","funding_links":[],"categories":["etc"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyfe79%2FFAImageView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskyfe79%2FFAImageView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyfe79%2FFAImageView/lists"}