Skip to content

Commit 23d688e

Browse files
author
hongyangAndroid
committed
update render demo
1 parent 4d03ed4 commit 23d688e

34 files changed

Lines changed: 696 additions & 0 deletions

performance_01_render/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

performance_01_render/build.gradle

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apply plugin: 'com.android.application'
2+
3+
android {
4+
compileSdkVersion 22
5+
buildToolsVersion "22.0.1"
6+
7+
defaultConfig {
8+
applicationId "com.zhy.performance_01_render"
9+
minSdkVersion 10
10+
targetSdkVersion 22
11+
versionCode 1
12+
versionName "1.0"
13+
}
14+
buildTypes {
15+
release {
16+
minifyEnabled false
17+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18+
}
19+
}
20+
}
21+
22+
dependencies {
23+
compile fileTree(dir: 'libs', include: ['*.jar'])
24+
compile 'com.android.support:appcompat-v7:22.1.1'
25+
compile project(':viewserver')
26+
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="android0416" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="android-gradle" name="Android-Gradle">
5+
<configuration>
6+
<option name="GRADLE_PROJECT_PATH" value=":performance_01_render" />
7+
</configuration>
8+
</facet>
9+
<facet type="android" name="Android">
10+
<configuration>
11+
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
13+
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
14+
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
15+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
16+
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
17+
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
18+
<option name="ALLOW_USER_CONFIGURATION" value="false" />
19+
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
20+
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
21+
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
22+
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
23+
</configuration>
24+
</facet>
25+
</component>
26+
<component name="NewModuleRootManager" inherit-compiler-output="false">
27+
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
28+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
29+
<exclude-output />
30+
<content url="file://$MODULE_DIR$">
31+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
32+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
33+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
34+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
38+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
39+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
40+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
43+
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
44+
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
45+
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
52+
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
53+
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
54+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
55+
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
56+
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
57+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
64+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
65+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
66+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
67+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
68+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
69+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
70+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
71+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
72+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
73+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
74+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
75+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
76+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
77+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
78+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
80+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
83+
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
85+
</content>
86+
<orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
87+
<orderEntry type="sourceFolder" forTests="false" />
88+
<orderEntry type="library" exported="" name="appcompat-v7-22.1.1" level="project" />
89+
<orderEntry type="library" exported="" name="support-v4-22.1.1" level="project" />
90+
<orderEntry type="library" exported="" name="support-annotations-22.1.1" level="project" />
91+
<orderEntry type="module" module-name="viewserver" exported="" />
92+
</component>
93+
</module>
94+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Add project specific ProGuard rules here.
2+
# By default, the flags in this file are appended to flags specified
3+
# in /Users/zhy/android/sdk/android-sdk-macosx/tools/proguard/proguard-android.txt
4+
# You can edit the include path and order by changing the proguardFiles
5+
# directive in build.gradle.
6+
#
7+
# For more details, see
8+
# http://developer.android.com/guide/developing/tools/proguard.html
9+
10+
# Add any project specific keep options here:
11+
12+
# If your project uses WebView with JS, uncomment the following
13+
# and specify the fully qualified class name to the JavaScript interface
14+
# class:
15+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16+
# public *;
17+
#}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.zhy.performance_01_render;
2+
3+
import android.app.Application;
4+
import android.test.ApplicationTestCase;
5+
6+
/**
7+
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
8+
*/
9+
public class ApplicationTest extends ApplicationTestCase<Application>
10+
{
11+
public ApplicationTest()
12+
{
13+
super(Application.class);
14+
}
15+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
package="com.zhy.performance_01_render">
4+
5+
<application
6+
android:allowBackup="true"
7+
android:icon="@mipmap/ic_launcher"
8+
android:label="@string/app_name"
9+
android:theme="@style/AppTheme">
10+
<activity
11+
android:name=".MainActivity"
12+
android:label="@string/app_name">
13+
<intent-filter>
14+
<action android:name="android.intent.action.MAIN"/>
15+
16+
<category android:name="android.intent.category.LAUNCHER"/>
17+
</intent-filter>
18+
</activity>
19+
<activity android:name=".OverDrawActivity01"/>
20+
<activity android:name=".OverDrawActivity02"/>
21+
<activity android:name=".CompareLayoutActivity"></activity>
22+
</application>
23+
24+
</manifest>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.zhy.performance_01_render;
2+
3+
import android.content.Context;
4+
import android.graphics.Bitmap;
5+
import android.graphics.BitmapFactory;
6+
import android.graphics.Canvas;
7+
import android.view.View;
8+
9+
/**
10+
* Created by zhy on 15/4/30.
11+
*/
12+
public class CardView extends View
13+
{
14+
private Bitmap[] mCards = new Bitmap[3];
15+
16+
private int[] mImgId = new int[]{R.drawable.alex, R.drawable.chris, R.drawable.claire};
17+
18+
public CardView(Context context)
19+
{
20+
super(context);
21+
22+
Bitmap bm = null;
23+
for (int i = 0; i < mCards.length; i++)
24+
{
25+
bm = BitmapFactory.decodeResource(getResources(), mImgId[i]);
26+
mCards[i] = Bitmap.createScaledBitmap(bm, 400, 600, false);
27+
}
28+
29+
setBackgroundColor(0xFF00ff00);
30+
}
31+
32+
@Override
33+
protected void onDraw(Canvas canvas)
34+
{
35+
36+
super.onDraw(canvas);
37+
38+
canvas.save();
39+
canvas.translate(20, 120);
40+
for (int i = 0; i < mCards.length; i++)
41+
{
42+
canvas.translate(120, 0);
43+
canvas.save(Canvas.CLIP_SAVE_FLAG);
44+
if (i < mCards.length - 1)
45+
{
46+
canvas.clipRect(0, 0, 120, mCards[i].getHeight());
47+
}
48+
canvas.drawBitmap(mCards[i], 0, 0, null);
49+
canvas.restore();
50+
}
51+
canvas.restore();
52+
53+
}
54+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.zhy.performance_01_render;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.app.ActionBarActivity;
5+
6+
import com.android.debug.hv.ViewServer;
7+
8+
9+
public class CompareLayoutActivity extends ActionBarActivity
10+
{
11+
12+
@Override
13+
protected void onCreate(Bundle savedInstanceState)
14+
{
15+
super.onCreate(savedInstanceState);
16+
setContentView(R.layout.activity_compare_layouts);
17+
18+
ViewServer.get(this).addWindow(this);
19+
}
20+
21+
@Override
22+
protected void onResume()
23+
{
24+
super.onResume();
25+
ViewServer.get(this).setFocusedWindow(this);
26+
}
27+
28+
@Override
29+
protected void onDestroy()
30+
{
31+
super.onDestroy();
32+
ViewServer.get(this).removeWindow(this);
33+
}
34+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.zhy.performance_01_render;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class Droid
7+
{
8+
public String name;
9+
public int imageId;
10+
public String date;
11+
public String msg;
12+
13+
14+
public Droid(String msg, String date, int imageId, String name)
15+
{
16+
this.msg = msg;
17+
this.date = date;
18+
this.imageId = imageId;
19+
this.name = name;
20+
}
21+
22+
public static List<Droid> generateDatas()
23+
{
24+
List<Droid> datas = new ArrayList<Droid>();
25+
26+
datas.add(new Droid("Lorem ipsum dolor sit amet, orci nullam cra", "3分钟前", -1, "alex"));
27+
datas.add(new Droid("Omnis aptent magnis suspendisse ipsum, semper egestas", "12分钟前", R.drawable.joanna, "john"));
28+
datas.add(new Droid("eu nibh, rhoncus wisi posuere lacus, ad erat egestas", "17分钟前", -1, "7heaven"));
29+
datas.add(new Droid("eu nibh, rhoncus wisi posuere lacus, ad erat egestas", "33分钟前", R.drawable.shailen, "Lseven"));
30+
31+
return datas;
32+
}
33+
34+
35+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.zhy.performance_01_render;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
import android.widget.Button;
9+
10+
11+
public class MainActivity extends AppCompatActivity
12+
{
13+
14+
@Override
15+
protected void onCreate(Bundle savedInstanceState)
16+
{
17+
super.onCreate(savedInstanceState);
18+
setContentView(R.layout.activity_main);
19+
20+
ViewGroup activityContainer = (ViewGroup) findViewById(R.id.activity_main_container);
21+
22+
addButton(OverDrawActivity01.class,
23+
getString(R.string.title_activity_overdraw01), activityContainer);
24+
25+
addButton(OverDrawActivity02.class, "Use ClipRect ", activityContainer);
26+
27+
addButton(CompareLayoutActivity.class, "Compare Layout", activityContainer);
28+
29+
}
30+
31+
private void addButton(final Class destination, String description, ViewGroup parent)
32+
{
33+
Button button = new Button(this);
34+
button.setOnClickListener(new View.OnClickListener()
35+
{
36+
@Override
37+
public void onClick(View v)
38+
{
39+
Intent problemIntent = new Intent(MainActivity.this, destination);
40+
startActivity(problemIntent);
41+
}
42+
});
43+
button.setText(description);
44+
parent.addView(button);
45+
}
46+
}

0 commit comments

Comments
 (0)