Skip to content

Commit

Permalink
add PAGImageView demo
Browse files Browse the repository at this point in the history
  • Loading branch information
liamcli committed Mar 24, 2023
1 parent b9beb9b commit 37e3448
Show file tree
Hide file tree
Showing 25 changed files with 550 additions and 51 deletions.
31 changes: 21 additions & 10 deletions sample/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ android {
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
Expand All @@ -26,17 +26,28 @@ android {
dirs 'libs'
}
}
sourceSets {
main {
jniLibs.srcDir(['libs'])
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}

dependencies {
implementation 'com.tencent.tav:libpag:latest.release'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'android.arch.navigation:navigation-fragment:1.0.0'
implementation 'android.arch.navigation:navigation-ui:1.0.0'
implementation 'com.tencent.tav:libpag:latest.release'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.navigation:navigation-fragment:2.0.0-rc02'
implementation 'androidx.navigation:navigation-ui:2.0.0-rc02'
implementation("androidx.exifinterface:exifinterface:1.3.3")
implementation "com.airbnb.android:lottie:6.0.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.tencent.libpag.sample.libpag_sample;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down
14 changes: 8 additions & 6 deletions sample/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tencent.libpag.sample.libpag_sample">
package="com.tencent.libpag.sample.libpag_sample">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REORDER_TASKS" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".TextureDemoActivity"></activity>
<activity android:name=".APIsDetailActivity" />
<activity android:name=".MultiplePAGImageViewActivity" />
<activity android:name=".PAGImageViewListActivity" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
Binary file modified sample/app/src/main/assets/10.pag
Binary file not shown.
Binary file modified sample/app/src/main/assets/13.pag
Binary file not shown.
Binary file modified sample/app/src/main/assets/18.pag
Binary file not shown.
Binary file added sample/app/src/main/assets/20.pag
Binary file not shown.
Binary file added sample/app/src/main/assets/21.pag
Binary file not shown.
Binary file added sample/app/src/main/assets/22.pag
Binary file not shown.
Binary file added sample/app/src/main/assets/2J.pag
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
import android.media.MediaMuxer;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package com.tencent.libpag.sample.libpag_sample;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import org.libpag.PAGImageView;

/**
* Provide views to RecyclerView with data from mDataSet.
*/
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
private static final String TAG = "CustomAdapter";

private String[] mDataSet;

// BEGIN_INCLUDE(recyclerViewSampleViewHolder)
/**
* Provide a reference to the type of views that you are using (custom ViewHolder)
*/
public static class ViewHolder extends RecyclerView.ViewHolder {
private final PAGImageView pagImageView;

public ViewHolder(View v) {
super(v);
// Define click listener for the ViewHolder's View.
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Element " + getAdapterPosition() + " clicked.");
}
});
pagImageView = (PAGImageView) v.findViewById(R.id.pagView);
}

public PAGImageView getView() {
return pagImageView;
}
}
// END_INCLUDE(recyclerViewSampleViewHolder)

/**
* Initialize the dataset of the Adapter.
*
* @param dataSet String[] containing the data to populate views to be used by RecyclerView.
*/
public CustomAdapter(String[] dataSet) {
mDataSet = dataSet;
}

// BEGIN_INCLUDE(recyclerViewOnCreateViewHolder)
// Create new views (invoked by the layout manager)
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
// Create a new view.
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.text_row_item, viewGroup, false);

return new ViewHolder(v);
}
// END_INCLUDE(recyclerViewOnCreateViewHolder)

// BEGIN_INCLUDE(recyclerViewOnBindViewHolder)
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
Log.d(TAG, "Element " + position + " set.");

// Get element from your dataset at this position and replace the contents of the view
// with that element
viewHolder.getView().setPath(mDataSet[position]);
viewHolder.getView().setRepeatCount(-1);
viewHolder.getView().play();
}
// END_INCLUDE(recyclerViewOnBindViewHolder)

// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mDataSet.length;
}
}
Original file line number Diff line number Diff line change
@@ -1,31 +1,13 @@
package com.tencent.libpag.sample.libpag_sample;

import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.EGL14;
import android.opengl.EGLConfig;
import android.opengl.EGLContext;
import android.opengl.EGLDisplay;
import android.opengl.EGLSurface;
import android.opengl.GLES20;
import android.opengl.GLUtils;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.RelativeLayout;

import org.libpag.PAGFile;
import org.libpag.PAGImage;
import org.libpag.PAGText;
import org.libpag.PAGView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.io.IOException;
import java.io.InputStream;
import android.view.WindowManager;

public class MainActivity extends AppCompatActivity implements SimpleListAdapter.ItemClickListener {

Expand All @@ -35,7 +17,9 @@ public class MainActivity extends AppCompatActivity implements SimpleListAdapter
"Image Replacement",
"Render Multiple PAG Files on A PAGView",
"Create PAGSurface through texture ID",
"Render an interval of the pag file"
"Render an interval of the pag file",
"Render Multiple PAGImageView",
"Render PAGImageView in list",
};

@Override
Expand Down Expand Up @@ -67,7 +51,12 @@ public void onItemClick(int position) {
case 4:
goToTestDetail(position);
break;

case 6:
startActivity(new Intent(MainActivity.this, MultiplePAGImageViewActivity.class));
break;
case 7:
startActivity(new Intent(MainActivity.this, PAGImageViewListActivity.class));
break;
default:
break;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.tencent.libpag.sample.libpag_sample;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

import android.view.MotionEvent;

import org.libpag.PAGImageView;

public class MultiplePAGImageViewActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_multiple_pagimageview);
callFire();
}

void fireImageView(int id, String path) {
PAGImageView view = findViewById(id);
view.setPath(path);
view.setRepeatCount(-1);
view.play();
}

void callFire() {
int ids[] = {R.id.pagView1, R.id.pagView2, R.id.pagView3, R.id.pagView4, R.id.pagView5,
R.id.pagView6, R.id.pagView7, R.id.pagView8, R.id.pagView9, R.id.pagView10,
R.id.pagView11, R.id.pagView12, R.id.pagView13, R.id.pagView14, R.id.pagView15,
R.id.pagView16, R.id.pagView17, R.id.pagView18, R.id.pagView19, R.id.pagView20,
R.id.pagView21, R.id.pagView22};
for (int i = 0; i < ids.length; i++) {
fireImageView(ids[i], "assets://" + (i + 1) + ".pag");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.tencent.libpag.sample.libpag_sample;

import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentManager;

public class PAGImageViewListActivity extends FragmentActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
PAGImageViewRecyclerViewFragment fragment = new PAGImageViewRecyclerViewFragment();
String[] path = new String[22];
for (int i = 0; i < 22; i++) {
path[i] = "assets://" + (i + 1) + ".pag";
}
fragment.setPaths(path);
transaction.add(android.R.id.content, fragment);
transaction.commit();
}
}
Loading

0 comments on commit 37e3448

Please sign in to comment.