├── .gitignore ├── README.md ├── Screenshot ├── .gitignore ├── .idea │ ├── compiler.xml │ ├── copyright │ │ └── profiles_settings.xml │ ├── gradle.xml │ ├── misc.xml │ ├── modules.xml │ └── runConfigurations.xml ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── screenshot │ │ │ ├── MainActivity.java │ │ │ └── Shot1_Activity.java │ │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ └── activity_shot1.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ ├── bg_shottest.jpg │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle └── TranslucentScrollView ├── .gitignore ├── .idea ├── caches │ ├── build_file_checksums.ser │ └── gradle_models.ser ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dbnavigator.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── milo │ │ └── demo │ │ ├── MainActivity.java │ │ ├── base │ │ └── BaseActivity.java │ │ ├── impl │ │ └── ActionBarClickListener.java │ │ ├── ui │ │ ├── FirstDemoActivity.java │ │ └── SecondDemoActivity.java │ │ ├── utils │ │ └── SystemBarUtils.java │ │ └── widget │ │ └── TranslucentActionBar.java │ └── res │ ├── layout │ ├── actionbar_trans.xml │ ├── activity_actionbar.xml │ ├── activity_demo_first.xml │ ├── activity_demo_second.xml │ ├── activity_main.xml │ ├── view_header.xml │ └── view_normal.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ ├── bg_avatar.png │ ├── bg_banner_my.png │ ├── dft_avatar.png │ ├── ic_address.png │ ├── ic_agent_my.png │ ├── ic_consume_history.png │ ├── ic_invite_my.png │ ├── ic_launcher.png │ ├── ic_left_light.png │ ├── ic_luck_my.png │ ├── ic_right_gray.png │ ├── ic_set_my.png │ ├── ic_shopcar_my.png │ ├── ic_sign.png │ ├── ic_teacher_my.png │ └── ic_wallet.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v19 │ └── styles.xml │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── ids.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── config.gradle ├── gif └── device-2016-12-26-192438.gif ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── mylib ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── milo │ │ └── lib │ │ ├── PullZoomView.java │ │ ├── TranslucentScrollView.java │ │ ├── impl │ │ └── IZoomControl.java │ │ └── utils │ │ ├── SizeUtils.java │ │ └── StatusBarUtils.java │ └── res │ ├── layout │ └── milo_zoomview.xml │ └── values │ ├── colors.xml │ └── strings.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/libraries 40 | 41 | # Keystore files 42 | *.jks 43 | 44 | # External native build folder generated in Android Studio 2.2 and later 45 | .externalNativeBuild -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## TranslucentScrollView 2 | 3 | 效果如图: 4 | ![image](https://github.com/yanjunhui2014/TranslucentScrollView/blob/master/TranslucentScrollView/gif/device-2016-12-26-192438.gif) 5 | 6 | 用法请参见 7 | [Demo](https://github.com/yanjunhui2014/TranslucentScrollView/blob/master/TranslucentScrollView/app/src/main/java/com/milo/demo/ui/SecondDemoActivity.java) 8 | 9 | 主要API 10 | 11 | ``` 12 | //设置HeaderView(也就是拉伸区域) 13 | PullZoomView.setHeaderView(R.layout.view_header); 14 | //设置普通(追加)视图,可以添加多个 15 | PullZoomView.addNormalView(R.layout.view_normal, R.layout.view_normal); 16 | //设置阻力系数 17 | PullZoomView.setDamping(0.2f, 0); 18 | 19 | //关联渐变视图 - 可选 20 | PullZoomView.attachTransView(mActionBar, getResources().getColor(R.color.colorPrimary), -1, -1); 21 | //设置透明度变化监听 - 可选 22 | PullZoomView.setTranslucentChangedListener(new TranslucentScrollView.TranslucentChangedListener() { 23 | @Override 24 | public void onTranslucentChanged(int transAlpha) { 25 | //回调alpah值,0-255 26 | } 27 | }); 28 | //隐藏ScrollBar - 可选 29 | PullZoomView.mLayoutTransSV.setVerticalScrollBarEnabled(false); 30 | ``` 31 | -------------------------------------------------------------------------------- /Screenshot/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /Screenshot/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Screenshot/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Screenshot/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /Screenshot/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /Screenshot/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Screenshot/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /Screenshot/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /Screenshot/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.1" 6 | defaultConfig { 7 | applicationId "com.screenshot" 8 | minSdkVersion 15 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 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 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:25.0.1' 28 | testCompile 'junit:junit:4.12' 29 | } 30 | -------------------------------------------------------------------------------- /Screenshot/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\02-Sdk/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 | #} 18 | -------------------------------------------------------------------------------- /Screenshot/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Screenshot/app/src/main/java/com/screenshot/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.screenshot; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.view.View; 6 | import android.widget.Button; 7 | 8 | public class MainActivity extends AppCompatActivity implements View.OnClickListener { 9 | 10 | Button btnShot1; 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | setContentView(R.layout.activity_main); 16 | init(); 17 | } 18 | 19 | private void init() { 20 | btnShot1 = (Button) findViewById(R.id.btn_shot_1); 21 | btnShot1.setOnClickListener(this); 22 | } 23 | 24 | @Override 25 | public void onClick(View view) { 26 | switch (view.getId()) { 27 | case R.id.btn_shot_1: 28 | startActivity(Shot1_Activity.createIntent(this)); 29 | break; 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Screenshot/app/src/main/java/com/screenshot/Shot1_Activity.java: -------------------------------------------------------------------------------- 1 | package com.screenshot; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.graphics.Bitmap; 6 | import android.os.Bundle; 7 | import android.support.annotation.Nullable; 8 | import android.support.v7.app.AppCompatActivity; 9 | import android.view.View; 10 | import android.widget.Button; 11 | import android.widget.ImageView; 12 | 13 | import java.io.FileOutputStream; 14 | import java.text.SimpleDateFormat; 15 | import java.util.Date; 16 | import java.util.Locale; 17 | 18 | /** 19 | * Created by 晖仔(Milo) on 2017/1/6. 20 | * email:303767416@qq.com 21 | */ 22 | 23 | public class Shot1_Activity extends AppCompatActivity implements View.OnClickListener { 24 | 25 | Button btnShot; 26 | ImageView shotView; 27 | 28 | public static Intent createIntent(Context context) { 29 | Intent intent = new Intent(context, Shot1_Activity.class); 30 | return intent; 31 | } 32 | 33 | @Override 34 | protected void onCreate(@Nullable Bundle savedInstanceState) { 35 | super.onCreate(savedInstanceState); 36 | setContentView(R.layout.activity_shot1); 37 | init(); 38 | 39 | } 40 | 41 | private void init() { 42 | btnShot = (Button) findViewById(R.id.btn_shot); 43 | btnShot.setOnClickListener(this); 44 | 45 | shotView = (ImageView) findViewById(R.id.img_shot); 46 | } 47 | 48 | @Override 49 | public void onClick(View v) { 50 | switch (v.getId()) { 51 | case R.id.btn_shot: 52 | shot(shotView); 53 | break; 54 | } 55 | } 56 | 57 | private void shot(View shotView) { 58 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.US); 59 | String fname = "/sdcard/" + sdf.format(new Date()) + ".png"; 60 | shotView.setDrawingCacheEnabled(true); 61 | shotView.buildDrawingCache(); 62 | Bitmap bitmap = shotView.getDrawingCache(); 63 | 64 | if (bitmap != null) { 65 | System.out.println("bitmap got !"); 66 | 67 | try { 68 | FileOutputStream out = new FileOutputStream(fname); 69 | bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 70 | System.out.println("file " + fname + "output done."); 71 | } catch (Exception e) { 72 | e.printStackTrace(); 73 | } 74 | } else { 75 | System.out.println("bitmap is NULL !"); 76 | } 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /Screenshot/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 |