2 Star 0 Fork 0

Archermind-TI / KShareViewActivityManager

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

KShareViewActivityManager

KShareViewActivityManager是精简到一个类的兼容页面间共享元素位移动画的库。

特征

  • 编程语言:Java

  • 效果图:

    • 文字动画

    gif

    • 图片动画

    gif

    • 图片加文字动画

    gif

安装教程

方式一

下载KShareViewActivityManager源码,启动 DevEco Studio并打开本工程,可直接编译运行entry示例工程。

方式二

在project的build.gradle中添加mavenCentral()的引用

repositories {   
 	...   
 	mavenCentral()   
	 ...           
 }

在entry的build.gradle中添加依赖

dependencies { 
... 
implementation 'com.gitee.archermind-ti:KShareViewActivityManager:1.0.0-beta' 
... 
}

使用说明

  • A->B

在第一个AbilitySliceA中:


text = (Text) findComponentById(ResourceTable.Id_text);
image = (Image) findComponentById(ResourceTable.Id_image);

KShareViewActivityManager.getInstance(this).startActivity(this, DestAbility.class,
                        ResourceTable.Layout_ability_main, ResourceTable.Layout_ability_dest, base, text, image);

第三个参数是要进行动画的 Component 所在的layout的xml ,举例:如果要对 DirectionalLayout 的子控件进行动画,请传入控件布局的xml。 第四个参数 ResourceTable.Layout_ability_dest 传入的是第二个 AbilitySlice 的布局 layout id,之后的参数是指需要共享元素动画的 Component 如何让 Manager 知道是哪两个 Component 在页面之间对应呢?ComponentDescription一样即可,如:ability_main 中:


<Text
    ohos:id="$+id:text"
    ohos:component_description="$string:text_description"
    ohos:height="match_content"
    ohos:width="match_content"
    ohos:text_alignment="center"
    ohos:layout_alignment="center"
    ohos:text="$string:mainability_HelloWorld"
    ohos:text_size="28fp"
    />

在 ability_dest 中:


<Text
    ohos:id="$+id:dest_text"
    ohos:component_description="$string:text_description"
    ohos:height="match_content"
    ohos:width="match_content"
    ohos:layout_alignment="horizontal_center"
    ohos:text="$string:destability_HelloWorld"
    ohos:text_size="28fp"
    ohos:text_color="#ec2045"
    />

component_description一样即可

  • B->A(回退)

请在AbilitySliceB 中添加:


@Override
protected void onBackPressed() {
    super.onBackPressed();
    KShareViewActivityManager.getInstance(this).finish(this);
}
  • 注意事项

因为是直接操作的 Content 显示区域,所以支持 AbilitySlice 互相跳,只要是在屏幕中显示的 Component,都可以进行动画。 由于进行动画的 Component 并不是原来的 Component,而是重新 parse 出来的,因此部分自定义属性并没有被赋值,Manager 对常见的Text 和Image 的部分属性参照原 Component 进行了复制,但如果是其他 Component 的其他属性,还请在 changeViewProperty(Component view) 这个回调函数中对其自定义属性进行设置。 如:


KShareViewActivityManager.getInstance(this).withAction(new KShareViewActivityAction() {
                        @Override
                        public void onAnimatorStart() {
                        }
                        @Override
                        public void onAnimatorEnd() {
                        }
                        @Override
                        public void changeViewProperty(View view) {
                        }
                    })

还可以 withIntent 来自定义Intent ,同时 withIntentAndRequestCode(Intent intent, int requestCode) 也可以达到 startAbilityForResult 的目的。

版本迭代

  • v1.0.0-beta

版权和许可信息

  • Apache License Version 2.0

Comments ( 0 )

Sign in for post a comment

About

Shared Element Transition 库 spread retract
Cancel

Releases (1)

All

Contributors

All

Activities

load more
can not load any more
1
https://gitee.com/archermind-ti/kshareviewactivitymanager.git
git@gitee.com:archermind-ti/kshareviewactivitymanager.git
archermind-ti
kshareviewactivitymanager
KShareViewActivityManager
master

Search