├── app ├── .gitignore ├── app-release.apk ├── app.iml ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── user │ │ └── scaleview │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── user │ │ │ └── scaleview │ │ │ ├── MainActivity.java │ │ │ ├── ScaleScroller.java │ │ │ └── ScaleView.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── example │ └── user │ └── scaleview │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties └── settings.gradle /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/app/app-release.apk -------------------------------------------------------------------------------- /app/app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.3" 6 | 7 | defaultConfig { 8 | applicationId "com.example.user.scaleview" 9 | minSdkVersion 15 10 | targetSdkVersion 23 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 | testCompile 'junit:junit:4.12' 25 | compile 'com.android.support:appcompat-v7:23.3.0' 26 | } 27 | -------------------------------------------------------------------------------- /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 D:\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 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/example/user/scaleview/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.example.user.scaleview; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/user/scaleview/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.user.scaleview; 2 | 3 | import android.support.v7.app.AppCompatActivity; 4 | import android.os.Bundle; 5 | import android.widget.TextView; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | private TextView tvNumber; 10 | private ScaleView scaleview; 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | setContentView(R.layout.activity_main); 16 | 17 | tvNumber = (TextView)findViewById(R.id.tvNumber); 18 | scaleview = (ScaleView)findViewById(R.id.scaleview); 19 | scaleview.setMaxNumber(1000); 20 | scaleview.setMinNumber(-1000); 21 | scaleview.setScaleNumber(10); 22 | scaleview.setAllBlockNum(30); 23 | scaleview.setTextSize(30); 24 | scaleview.setCenterNum(100); 25 | scaleview.setNumberListener(new ScaleView.NumberListener() { 26 | @Override 27 | public void onChanged(int mCurrentNum) { 28 | tvNumber.setText(mCurrentNum + ""); 29 | } 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/user/scaleview/ScaleScroller.java: -------------------------------------------------------------------------------- 1 | package com.example.user.scaleview; 2 | 3 | import android.content.Context; 4 | import android.os.Handler; 5 | import android.os.Message; 6 | import android.view.GestureDetector; 7 | import android.view.MotionEvent; 8 | import android.widget.Scroller; 9 | 10 | /** 11 | * 监听滑动 12 | * Created by user on 2016/6/1. 13 | */ 14 | public class ScaleScroller { 15 | 16 | private Context context; 17 | private GestureDetector gestureDetector; //滑动手势 18 | private Scroller scroller; //滑动辅助类 19 | private ScrollingListener listener; 20 | private int lastX; 21 | private final int ON_FLING = 1; 22 | 23 | private Handler handler = new Handler(){ 24 | @Override 25 | public void handleMessage(Message msg) { 26 | boolean isFinished = scroller.computeScrollOffset(); 27 | int curX = scroller.getCurrX(); 28 | System.out.println("velocityX = " + curX); 29 | int delta = lastX - curX; 30 | if(listener != null){ 31 | listener.onScroll(delta); 32 | } 33 | lastX = curX; 34 | if(isFinished) 35 | handler.sendEmptyMessage(ON_FLING); 36 | else 37 | listener.onFinished(); 38 | } 39 | }; 40 | 41 | private GestureDetector.SimpleOnGestureListener simpleOnGestureListener = new GestureDetector.SimpleOnGestureListener(){ 42 | @Override 43 | public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 44 | return true; 45 | } 46 | 47 | @Override 48 | public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 49 | final int minX = -0x7fffffff; 50 | final int maxX = 0x7fffffff; 51 | lastX = 0; 52 | scroller.fling(0, 0, (int)-velocityX, 0, minX, maxX, 0, 0); 53 | handler.sendEmptyMessage(ON_FLING); 54 | return true; 55 | } 56 | }; 57 | 58 | public ScaleScroller(Context context, ScrollingListener listener){ 59 | this.context = context; 60 | this.listener = listener; 61 | init(); 62 | } 63 | 64 | private void init() { 65 | gestureDetector = new GestureDetector(context, simpleOnGestureListener); 66 | gestureDetector.setIsLongpressEnabled(false); 67 | scroller = new Scroller(context); 68 | } 69 | 70 | //由外部传入event事件 71 | public boolean onTouchEvent(MotionEvent event){ 72 | if(event.getAction() == MotionEvent.ACTION_DOWN){ 73 | scroller.forceFinished(true); 74 | lastX = (int)event.getX(); 75 | } else if (event.getAction() == MotionEvent.ACTION_MOVE){ 76 | int distanceX = (int) (event.getX() - lastX); 77 | if (distanceX != 0) { 78 | listener.onScroll(distanceX); 79 | lastX = (int)event.getX(); 80 | } 81 | } else if(event.getAction() == MotionEvent.ACTION_UP){ 82 | listener.onFinished(); 83 | } 84 | gestureDetector.onTouchEvent(event); 85 | return true; 86 | } 87 | 88 | //滑动回调 89 | public interface ScrollingListener { 90 | 91 | void onScroll(int distance); 92 | 93 | void onStarted(); 94 | 95 | void onFinished(); 96 | 97 | void onJustify(); 98 | } 99 | 100 | } 101 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/user/scaleview/ScaleView.java: -------------------------------------------------------------------------------- 1 | package com.example.user.scaleview; 2 | 3 | import android.content.Context; 4 | import android.graphics.Canvas; 5 | import android.graphics.Color; 6 | import android.graphics.Paint; 7 | import android.graphics.Path; 8 | import android.graphics.Rect; 9 | import android.graphics.RectF; 10 | import android.graphics.SurfaceTexture; 11 | import android.os.Handler; 12 | import android.os.Message; 13 | import android.util.AttributeSet; 14 | import android.view.MotionEvent; 15 | import android.view.TextureView; 16 | 17 | /** 18 | * Created by user on 2016/6/1. 19 | */ 20 | public class ScaleView extends TextureView implements TextureView.SurfaceTextureListener, ScaleScroller.ScrollingListener{ 21 | 22 | ScaleScroller mScroller; 23 | 24 | private Rect mTextRect = new Rect(); 25 | private RectF mBorderRectF = new RectF(); 26 | 27 | private Paint mBorderFillPaint = new Paint(); 28 | private Paint mBorderPaint = new Paint(); 29 | private Paint mCurrentMarkPaint = new Paint(); 30 | private Paint mScaleMarkPaint = new Paint(); 31 | 32 | private int mTextHeight = 20; //数字字体大小 33 | 34 | private int mCenterNum; //中心点数字 35 | private int offset = 0; 36 | private int dis; //刻度间距 由mWidth 和 allBlockNum计算得到 37 | private int allBlockNum = 30; //刻度分割块的数量 默认30 38 | private float mWidth; 39 | 40 | private int maxNum = 100; //最大数字 41 | private int minNum = -100; //最小数字 42 | private int scaleNum = 1; //每一个刻度间相差数 43 | 44 | private NumberListener numberListener; 45 | 46 | public ScaleView(Context context) { 47 | super(context); 48 | init(); 49 | } 50 | 51 | public ScaleView(Context context, AttributeSet attrs) { 52 | super(context, attrs); 53 | init(); 54 | } 55 | 56 | public ScaleView(Context context, AttributeSet attrs, int defStyleAttr) { 57 | super(context, attrs, defStyleAttr); 58 | init(); 59 | } 60 | 61 | private void init() { 62 | mScroller = new ScaleScroller(getContext(), this); 63 | setSurfaceTextureListener(this); 64 | initPaints(); 65 | } 66 | 67 | private void initPaints() { 68 | mBorderPaint.setColor(0xffffdfbe); 69 | mBorderPaint.setStyle(Paint.Style.STROKE); 70 | mBorderPaint.setStrokeWidth(2); 71 | 72 | mBorderFillPaint.setColor(0xfffffced); 73 | mBorderFillPaint.setStyle(Paint.Style.FILL); 74 | mBorderFillPaint.setStrokeWidth(2); 75 | 76 | mScaleMarkPaint.setColor(0xff979797); 77 | mScaleMarkPaint.setStyle(Paint.Style.FILL); 78 | mScaleMarkPaint.setStrokeWidth(3); 79 | mScaleMarkPaint.setTextSize(mTextHeight); 80 | 81 | mCurrentMarkPaint.setColor(Color.RED); 82 | mCurrentMarkPaint.setStyle(Paint.Style.FILL); 83 | mCurrentMarkPaint.setStrokeWidth(3); 84 | 85 | } 86 | 87 | //刷新视图 88 | private void refreshCanvas() { 89 | if (mBorderRectF.isEmpty()) { 90 | return; 91 | } 92 | Canvas canvas = lockCanvas(); 93 | if(canvas != null) { 94 | canvas.drawColor(Color.WHITE); 95 | drawBorder(canvas); 96 | drawScaleMark(canvas); 97 | drawMarkPoint(canvas); 98 | } 99 | unlockCanvasAndPost(canvas); 100 | } 101 | 102 | //画出所有刻度:从中间向两边画 103 | private void drawScaleMark(Canvas canvas) { 104 | int count = 0; 105 | final int centerX = (int)mBorderRectF.centerX(); 106 | if(mCenterNum > maxNum) 107 | mCenterNum = maxNum; 108 | if (mCenterNum < minNum) 109 | mCenterNum = minNum; 110 | if(numberListener != null) 111 | numberListener.onChanged(mCenterNum); 112 | 113 | while(true){ 114 | int left = centerX - dis * count; 115 | int leftNum = mCenterNum - count * scaleNum; 116 | int right = centerX + dis * count; 117 | int rightNum = mCenterNum + count * scaleNum; 118 | 119 | String leftText = String.valueOf(leftNum); 120 | String rightText = String.valueOf(rightNum); 121 | //间隔5刻度画文字信息 122 | if(leftNum % (5*scaleNum) == 0) { 123 | canvas.drawLine(left, canvas.getHeight() / 2, left, canvas.getHeight() - 1, mScaleMarkPaint); 124 | mScaleMarkPaint.getTextBounds(leftText, 0, leftText.length(), mTextRect); 125 | canvas.drawText(leftText, left - mTextRect.centerX(), canvas.getHeight() / 2, mScaleMarkPaint); 126 | } 127 | else 128 | canvas.drawLine(left, canvas.getHeight() * 2 / 3, left, canvas.getHeight() - 1, mScaleMarkPaint); 129 | 130 | if(rightNum % (5*scaleNum) == 0) { 131 | canvas.drawLine(right, canvas.getHeight() / 2, right, canvas.getHeight() - 1, mScaleMarkPaint); 132 | mScaleMarkPaint.getTextBounds(rightText, 0, rightText.length(), mTextRect); 133 | canvas.drawText(rightText, right - mTextRect.centerX(), canvas.getHeight() / 2, mScaleMarkPaint); 134 | } 135 | else 136 | canvas.drawLine(right, canvas.getHeight() * 2 / 3, right, canvas.getHeight() - 1, mScaleMarkPaint); 137 | 138 | count++; 139 | if(left < 0) 140 | break; 141 | } 142 | } 143 | 144 | private void drawBorder(Canvas canvas) { 145 | canvas.drawLine(mBorderRectF.left, mBorderRectF.bottom - 1, mBorderRectF.right, mBorderRectF.bottom - 1, mScaleMarkPaint); 146 | } 147 | 148 | 149 | private void drawMarkPoint(Canvas canvas) { 150 | int centerX = (int)mBorderRectF.centerX(); 151 | canvas.drawLine(centerX, canvas.getHeight() / 4, centerX, canvas.getHeight() - 1, mCurrentMarkPaint); 152 | } 153 | 154 | @Override 155 | public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { 156 | mBorderRectF.set(mBorderPaint.getStrokeWidth(), mBorderPaint.getStrokeWidth(), 157 | width - mBorderPaint.getStrokeWidth(), height - mBorderPaint.getStrokeWidth()); 158 | mWidth = mBorderRectF.width(); 159 | dis = (int)(mWidth / allBlockNum); 160 | refreshCanvas(); 161 | } 162 | 163 | @Override 164 | public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { 165 | 166 | } 167 | 168 | @Override 169 | public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { 170 | return false; 171 | } 172 | 173 | @Override 174 | public void onSurfaceTextureUpdated(SurfaceTexture surface) { 175 | 176 | } 177 | 178 | 179 | @Override 180 | public void onScroll(int distance) { 181 | offset += distance; 182 | if (offset > dis) { 183 | offset = 0; 184 | mCenterNum -= scaleNum; 185 | } 186 | if (offset < -dis) { 187 | offset = 0; 188 | mCenterNum += scaleNum; 189 | } 190 | refreshCanvas(); 191 | } 192 | 193 | @Override 194 | public void onStarted() { 195 | 196 | } 197 | 198 | @Override 199 | public void onFinished() { 200 | if(offset != 0) { 201 | //还原中心点在刻度位置上 202 | offset = 0; 203 | refreshCanvas(); 204 | } 205 | } 206 | 207 | @Override 208 | public void onJustify() { 209 | 210 | } 211 | 212 | @Override 213 | public boolean onTouchEvent(MotionEvent event) { 214 | return mScroller.onTouchEvent(event); 215 | } 216 | 217 | interface NumberListener{ 218 | public void onChanged(int mCurrentNum); 219 | } 220 | 221 | 222 | public void setNumberListener(NumberListener listener){ 223 | this.numberListener = listener; 224 | } 225 | 226 | public void setTextSize(int textSize){ 227 | this.mTextHeight = textSize; 228 | } 229 | 230 | public void setMaxNumber(int maxNum){ 231 | this.maxNum = maxNum; 232 | } 233 | 234 | public void setMinNumber(int minNum){ 235 | this.minNum = minNum; 236 | } 237 | 238 | public void setScaleNumber(int scaleNum){ 239 | this.scaleNum = scaleNum; 240 | } 241 | 242 | public void setAllBlockNum(int allBlockNum){ 243 | this.allBlockNum = allBlockNum; 244 | } 245 | 246 | public void setCenterNum(int centerNum){ 247 | this.mCenterNum = centerNum; 248 | } 249 | } 250 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 23 | 24 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ScaleView 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/test/java/com/example/user/scaleview/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.example.user.scaleview; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.1.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LukeAndYisa/ScaleView/43df65f14a8e72ce16e4c57a6c1169811e3a7480/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------