使用Github的Library实现APP的动画效果

动画库地址:https://github.com/glomadrian/Grav

一、新建Android工程

二、添加Library

1、Android也是模块化编程,方便调用已有的库文件,添加Library步骤:File->New->Import Module进入下图所示界面,选中从Github下载下来的Grav库文件。

2.添加好库文件会提示找不到该插件,解决办法就是在根项目的build.gradle添加依赖,添加完成之后可以看到Project列表出现了grav。

classpath 'com.novoda:bintray-release:0.3.4' 

3.接下来给app模块添加grav模块的依赖,步骤如下图所示,依赖添加成功后就可以调用其中的API了。

三、移植代码

1.首先找到Github代码中活动文件和布局文件的位置,方便引用。

2.解决butterknife插件问题

2.1.File->Setting,搜索插件进行安装,安装完成会提示重启。

2.2.重启之后,需要在app的构建框架下面添加远程依赖,注意版本是8.4.0。

compile 'com.jakewharton:butterknife:8.4.0'

2.3.然后同步工程和框架文件,此时的butterknife不再是红色,插件可以正常使用了。

3.移植之后的工程目录及代码。

MainActivity.java

import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.v7.app.AppCompatActivity;

import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        showView(R.layout.grav);
    }

    private void showView(@LayoutRes int view){
        getSupportFragmentManager().beginTransaction().replace(R.id.container,
GravSampleFragment.newInstance(view)).commit();
    }
}

GravSampleFragment.java

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.github.glomadrian.grav.GravView;

import butterknife.BindView;
import butterknife.ButterKnife;

public class GravSampleFragment extends Fragment {
    public static final String KEY_LAYOUT = "KEY_LAYOUT";
    private int layout;
    @BindView(R.id.grav) GravView gravView;

    public static GravSampleFragment newInstance(int layout) {
        Bundle args = new Bundle();
        args.putInt(KEY_LAYOUT, layout);
        GravSampleFragment fragment = new GravSampleFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        layout = getArguments().getInt(KEY_LAYOUT);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(layout, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ButterKnife.bind(this, view);
    }

    @Override
    public void onPause() {
        super.onPause();
        gravView.stop();
    }
}

grav.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00BFFF"
    tools:context="com.example.zht.gravtest.MainActivity">

  <com.github.glomadrian.grav.GravView
      android:id="@+id/grav"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_centerInParent="true"
      app:colorGenerator="com.github.glomadrian.grav.generator.paint.ArrayColorGenerator"
      app:array_colors="@array/Spectral"
      app:pointGenerator="com.github.glomadrian.grav.generator.point.RegularPointGenerator"
      app:regular_cell_size="100"
      app:regular_variance="200"
      app:gravGenerator="com.github.glomadrian.grav.generator.grav.BallGenerator"
      app:ball_size="3dp"
      app:animationGenerators="@array/BallWaveAnimations"
      app:side_to_side_min_duration="2000"
      app:side_to_side_max_duration="5000"
      app:side_to_side_direction="upToDown"
      app:shake_variance="50dp"
      app:ball_size_from_size="3dp"
      app:ball_size_to_size="6dp"
      app:shake_direction="horizontal"
      />

</RelativeLayout>

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="match_parent">

    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical">
      <android.support.v7.widget.Toolbar
          android:id="@+id/toolbar"
          android:background="@color/colorPrimary"
          android:layout_width="match_parent"
          android:layout_height="?attr/actionBarSize">
      </android.support.v7.widget.Toolbar>

      <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    </LinearLayout>

</RelativeLayout>

四、APP效果图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值