diff --git a/broccoli/src/main/java/me/samlss/broccoli/util/DisplayUtil.java b/broccoli/src/main/java/me/samlss/broccoli/util/DisplayUtil.java new file mode 100644 index 0000000..d9a7ef2 --- /dev/null +++ b/broccoli/src/main/java/me/samlss/broccoli/util/DisplayUtil.java @@ -0,0 +1,277 @@ +package me.samlss.broccoli.util; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.util.Log; +import android.view.Display; +import android.view.View; +import android.view.ViewGroup.LayoutParams; +import android.view.WindowManager; +import android.widget.ListAdapter; +import android.widget.ListView; + +import java.lang.reflect.Field; + +/** + * + * 功能说明:页面布局控件常用的一些工具类 + * 日期: 2015-12-22 + * 作者: all developer + */ +@SuppressLint("NewApi") +public class DisplayUtil { + + /** + * 设置ListView 的Item高度 + * + * @param activity + * @param listView + * @param height + */ + public static void setListViewItemHeight(Activity activity, + ListView listView, int height) { + ListAdapter listAdapter = listView.getAdapter(); + if (listAdapter == null) { + return; + } + int itemNum = listAdapter.getCount(); + + for (int j = 0; j < itemNum; j++) { + View listItem = listAdapter.getView(j, null, listView); + LayoutParams params = listItem.getLayoutParams(); + params.height = height; + listItem.setLayoutParams(params); + } + } + + /** + * 得到屏幕的高度(通知栏除外) + * + * @param activity + * @return + */ + public static int getContentViewHeight(Activity activity) { + int screenHeight = DisplayUtil.getScreenHeight(activity); + return screenHeight - getStatusBarHeight(activity); + } + + /** + * + * 功能说明:获取传入的view的高度 + * 日期: 2015-12-22 + * 作者:advance + * @param view + * @return + */ + public static int getViewHeight(View view) { + + int w = View.MeasureSpec.makeMeasureSpec(0, + View.MeasureSpec.UNSPECIFIED); + int h = View.MeasureSpec.makeMeasureSpec(0, + View.MeasureSpec.UNSPECIFIED); + view.measure(w, h); + return view.getMeasuredHeight(); + } + + /** + * + * 功能说明:获取传入的view的宽度 + * 日期: 2015-12-22 + * 作者:advance + * @param view + * @return + */ + public static int getViewWidth(View view) { + int w = View.MeasureSpec.makeMeasureSpec(0, + View.MeasureSpec.UNSPECIFIED); + int h = View.MeasureSpec.makeMeasureSpec(0, + View.MeasureSpec.UNSPECIFIED); + view.measure(w, h); + return view.getMeasuredWidth(); + } + + /** + * 得到通知栏的高度 + * + * @param context + * @return + */ + public static int getStatusBarHeight(Context context) { + Class c = null; + Object obj = null; + Field field = null; + int x = 0, statusBarHeight = 0; + try { + c = Class.forName("com.android.internal.R$dimen"); + obj = c.newInstance(); + field = c.getField("status_bar_height"); + x = Integer.parseInt(field.get(obj).toString()); + statusBarHeight = context.getResources().getDimensionPixelSize(x); + } catch (Exception e1) { + Log.e("Exception", Log.getStackTraceString(e1)); + } + return statusBarHeight; + } + + /** + * 得到屏幕高度 + * + * @param activity + * @return + */ + public static int getScreenHeight(Activity activity) { + + return activity.getWindowManager().getDefaultDisplay().getHeight(); + } + + /** + * 得到屏幕宽度 + * + * @param activity + * @return + */ + public static int getScreenWight(Activity activity) { + + return activity.getWindowManager().getDefaultDisplay().getWidth(); + } + + /** + * + * @param activity + * @param view + * 要设置的控件 + * @param heightRatio + * 控件占屏幕高的比率 + * @param widthRatio + * 控件占屏幕宽的比率 + */ + public static void setViewHWLocation(Activity activity, View view, + float heightRatio, float widthRatio, float heightLocation, + float widthLocation) { + + int screenWidth = activity.getWindowManager().getDefaultDisplay() + .getWidth(); + int screenHeight = activity.getWindowManager().getDefaultDisplay() + .getHeight(); + LayoutParams lParams = view.getLayoutParams(); + LayoutParams layoutParams = view.getLayoutParams(); + layoutParams.width = (int) (screenWidth * widthRatio); + layoutParams.height = (int) (screenHeight * heightRatio); + view.setLayoutParams(lParams); + view.setX((float)(screenWidth * widthLocation - layoutParams.width / 2f)); + view.setY((float)(screenHeight * heightLocation - layoutParams.height / 2f)); + } + + /** + * + * 功能说明:以一定的比例设置传入的view的高度 + * 日期: 2015-12-22 + * 作者:advance + * @param activity + * @param view + * @param heightRatio 比例 + */ + public static void setViewHeight(Activity activity, View view, + float heightRatio) { + + int screenHeight = activity.getWindowManager().getDefaultDisplay() + .getHeight(); + LayoutParams lParams = view.getLayoutParams(); + LayoutParams layoutParams = view.getLayoutParams(); + layoutParams.height = (int) (screenHeight * heightRatio); + view.setLayoutParams(lParams); + } + + /** + * 注意:设置dialog控件宽高一定要放在dialog.show()之后! 设置dialog显示的大小 + * + * @param activity + * @param dialog + * 要设置对话框 + * @param heightRatio + 占屏幕高的比例 + * @param widthRatio + 占屏幕宽的比例 + */ + public static void setDialogHW(Activity activity, Dialog dialog, + float heightRatio, float widthRatio) { + WindowManager m = activity.getWindowManager(); + Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 + WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); // 获取对话框当前的参数值 + p.height = (int) (d.getHeight() * heightRatio); + p.width = (int) (d.getWidth() * widthRatio); + dialog.onWindowAttributesChanged(p); + dialog.getWindow().setAttributes(p); + } + + /** + * 设置dialog的位置 + * + * @param activity + * @param dialog + * @param heightLocation + * 相对原来位置的偏移量 + * @param widthLocation + * 相对原来位置的偏移量 + */ + public static void setDialogLocation(Activity activity, Dialog dialog, + float heightLocation, float widthLocation) { + WindowManager m = activity.getWindowManager(); + Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 + WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); // 获取对话框当前的参数值 + p.x = (int) (d.getWidth() * widthLocation); + p.y = (int) (d.getHeight() * heightLocation); + dialog.getWindow().setAttributes(p); + } + + /** + * 设置dialog的位置 + * + * @param activity + * @param dialog + * @param heightLocation + * 相对原来位置的偏移量 + * @param widthLocation + * 相对原来位置的偏移量 + */ + public static void context(Activity activity, Dialog dialog, + float heightLocation, float widthLocation) { + WindowManager m = activity.getWindowManager(); + Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 + WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); // 获取对话框当前的参数值 + p.x = (int) (d.getWidth() * widthLocation); + p.y = (int) (d.getHeight() * heightLocation); + dialog.getWindow().setAttributes(p); + + } + + /** + * 根据手机的分辨率从 dp 的单位 转成为 px(像素) + */ + public static int dip2px(Context context, float dpValue) { + float density = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * density + 0.5f); + } + + /** + * 根据手机的分辨率从 px(像素) 的单位 转成为 dp + */ + public static int px2dip(Context context, float pxValue) { + float density = context.getResources().getDisplayMetrics().density; + return (int) (pxValue / density + 0.5f); + } + + /** + * + * 功能说明:获取设备的密度 + * 日期: 2015-12-22 + * 作者:advance + * @param context + * @return + */ + public static float getDensity(Context context) { + return context.getResources().getDisplayMetrics().density; + } +} diff --git a/broccoli/src/main/res/values/colors.xml b/broccoli/src/main/res/values/colors.xml new file mode 100644 index 0000000..8f5065f --- /dev/null +++ b/broccoli/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #f6f6f6 + #99ffffff + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index a87d7c0..c8213e9 100644 --- a/build.gradle +++ b/build.gradle @@ -3,12 +3,40 @@ buildscript { repositories { + maven { url 'https://developer.huawei.com/repo/' + } + google() jcenter() + maven { url "https://maven.aliyun.com/repository/public" } + maven { url 'https://storage.flutter-io.cn/download.flutter.io' } + maven { + url 'http://maven.aliyun.com/nexus/content/repositories/releases/' + } + + maven { + url "https://artifact.bytedance.com/repository/byteX/" + } + + maven { + url 'https://mvnrepository.com/artifact/org.eweb4j/fel' + } + + maven { + url "https://mvn.mob.com/android" + } + + maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } + maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } + maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.5.4' classpath 'com.novoda:bintray-release:0.8.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30" + // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -16,9 +44,21 @@ buildscript { allprojects { repositories { - maven{url "https://jitpack.io"} + maven { url "http://mvn.mob.com/android" } + maven { url "https://jitpack.io" } + maven { url 'https://developer.huawei.com/repo/' } google() jcenter() + maven { + url 'http://maven.aliyun.com/nexus/content/repositories/releases/' + } + maven { + url "https://mvn.mob.com/android" + } + maven { + url "https://mvn.getui.com/nexus/content/repositories/releases/" + } + maven { url "https://maven.aliyun.com/repository/public" } } tasks.withType(Javadoc) { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f6b961f..1948b90 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9a4163a..ebc7d52 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Mon Mar 20 16:52:26 CST 2023 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/sample/build.gradle b/sample/build.gradle index 0c26237..f5b697f 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 28 defaultConfig { applicationId "me.samlss.broccoli_demo" - minSdkVersion 14 + minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" @@ -26,15 +26,16 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.android.support:recyclerview-v7:28.0.0' - implementation 'com.android.support:cardview-v7:28.0.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 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:runner:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation project(':broccoli') - debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.2' - releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.2' +// debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.2' +// releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.2' + implementation 'com.squareup.leakcanary:leakcanary-android:2.6' implementation 'de.hdodenhof:circleimageview:2.2.0' + implementation('androidx.recyclerview:recyclerview:1.1.0') } diff --git a/sample/src/main/java/me/samlss/broccoli_demo/App.java b/sample/src/main/java/me/samlss/broccoli_demo/App.java index 395ec60..52b2429 100644 --- a/sample/src/main/java/me/samlss/broccoli_demo/App.java +++ b/sample/src/main/java/me/samlss/broccoli_demo/App.java @@ -2,8 +2,8 @@ import android.app.Application; -import com.squareup.leakcanary.LeakCanary; -import com.squareup.leakcanary.RefWatcher; +//import com.squareup.leakcanary.LeakCanary; +//import com.squareup.leakcanary.RefWatcher; /** * @author SamLeung @@ -12,20 +12,20 @@ * @description */ public class App extends Application { - public static RefWatcher sRefWatcher; +// public static RefWatcher sRefWatcher; @Override public void onCreate() { super.onCreate(); - if (LeakCanary.isInAnalyzerProcess(this)) { - // This process is dedicated to LeakCanary for heap analysis. - // You should not init your app in this process. - return; - } - sRefWatcher = LeakCanary.install(this); +// if (LeakCanary.isInAnalyzerProcess(this)) { +// // This process is dedicated to LeakCanary for heap analysis. +// // You should not init your app in this process. +// return; +// } +// sRefWatcher = LeakCanary.install(this); // Normal app init code... } - public static RefWatcher getRefWatcher(){ - return sRefWatcher; - } +// public static RefWatcher getRefWatcher(){ +// return sRefWatcher; +// } } diff --git a/sample/src/main/java/me/samlss/broccoli_demo/DingDingSampleActivity.java b/sample/src/main/java/me/samlss/broccoli_demo/DingDingSampleActivity.java index 451eb0d..e609f3f 100644 --- a/sample/src/main/java/me/samlss/broccoli_demo/DingDingSampleActivity.java +++ b/sample/src/main/java/me/samlss/broccoli_demo/DingDingSampleActivity.java @@ -3,9 +3,9 @@ import android.graphics.Color; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import me.samlss.broccoli.Broccoli; import me.samlss.broccoli.PlaceholderParameter; diff --git a/sample/src/main/java/me/samlss/broccoli_demo/LayoutAdvancedSampleActivity.java b/sample/src/main/java/me/samlss/broccoli_demo/LayoutAdvancedSampleActivity.java index d5ce7af..4d4c9b6 100644 --- a/sample/src/main/java/me/samlss/broccoli_demo/LayoutAdvancedSampleActivity.java +++ b/sample/src/main/java/me/samlss/broccoli_demo/LayoutAdvancedSampleActivity.java @@ -4,8 +4,9 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import android.view.MotionEvent; import android.view.View; import android.view.animation.BounceInterpolator; @@ -58,25 +59,25 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { } private void initViews(){ - tvViewTimes = findViewById(R.id.tv_view_time); - tvCollectTimes = findViewById(R.id.tv_collect_time); - tvPrice = findViewById(R.id.tv_price); - ivClock = findViewById(R.id.iv_clock); - tvTime = findViewById(R.id.tv_time); - ivCalendar = findViewById(R.id.iv_calendar); - ivLocation = findViewById(R.id.iv_location); - tvLocation = findViewById(R.id.tv_location); - ivRightArrow = findViewById(R.id.iv_arrow_right); + tvViewTimes = (TextView) findViewById(R.id.tv_view_time); + tvCollectTimes = (TextView) findViewById(R.id.tv_collect_time); + tvPrice = (TextView) findViewById(R.id.tv_price); + ivClock = (ImageView) findViewById(R.id.iv_clock); + tvTime = (TextView) findViewById(R.id.tv_time); + ivCalendar = (ImageView) findViewById(R.id.iv_calendar); + ivLocation = (ImageView) findViewById(R.id.iv_location); + tvLocation = (TextView) findViewById(R.id.tv_location); + ivRightArrow = (ImageView) findViewById(R.id.iv_arrow_right); vLine = findViewById(R.id.view_line); - ivLogo = findViewById(R.id.iv_logo); - tvOrganizer = findViewById(R.id.tv_organizer_name); - tvOrganizerDescription = findViewById(R.id.tv_organizer_description); - tvFans = findViewById(R.id.tv_fans); - tvFansNumber = findViewById(R.id.tv_fans_number); - tvEvents = findViewById(R.id.tv_events); - tvEventsNumber = findViewById(R.id.tv_events_number); - tvFollow = findViewById(R.id.tv_follow); - tvStation = findViewById(R.id.tv_station); + ivLogo = (ImageView) findViewById(R.id.iv_logo); + tvOrganizer = (TextView) findViewById(R.id.tv_organizer_name); + tvOrganizerDescription = (TextView) findViewById(R.id.tv_organizer_description); + tvFans = (TextView) findViewById(R.id.tv_fans); + tvFansNumber = (TextView) findViewById(R.id.tv_fans_number); + tvEvents = (TextView) findViewById(R.id.tv_events); + tvEventsNumber = (TextView) findViewById(R.id.tv_events_number); + tvFollow = (TextView) findViewById(R.id.tv_follow); + tvStation = (TextView) findViewById(R.id.tv_station); findViewById(R.id.iv_retry).setOnTouchListener(new View.OnTouchListener() { @Override diff --git a/sample/src/main/java/me/samlss/broccoli_demo/LayoutSimpleSampleActivity.java b/sample/src/main/java/me/samlss/broccoli_demo/LayoutSimpleSampleActivity.java index 0f80717..2d57c9e 100644 --- a/sample/src/main/java/me/samlss/broccoli_demo/LayoutSimpleSampleActivity.java +++ b/sample/src/main/java/me/samlss/broccoli_demo/LayoutSimpleSampleActivity.java @@ -4,12 +4,12 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.view.View; import android.view.animation.BounceInterpolator; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import me.samlss.broccoli.Broccoli; diff --git a/sample/src/main/java/me/samlss/broccoli_demo/MainActivity.java b/sample/src/main/java/me/samlss/broccoli_demo/MainActivity.java index f66ca9e..b24f77d 100644 --- a/sample/src/main/java/me/samlss/broccoli_demo/MainActivity.java +++ b/sample/src/main/java/me/samlss/broccoli_demo/MainActivity.java @@ -2,27 +2,29 @@ import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + public class MainActivity extends AppCompatActivity { @Override - protected void onCreate(Bundle savedInstanceState) { + protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } - public void startLayoutSample(View view) { + public void startLayoutSample(View view) { // 静态 startActivity(new Intent(this, LayoutSimpleSampleActivity.class)); } - public void startRecyclerViewSample(View view) { - startActivity(new Intent(this, RecyclerViewSampleActivity.class)); + public void startAdvancedLayoutSample(View view) { // 动画 + startActivity(new Intent(this, LayoutAdvancedSampleActivity.class)); } - public void startAdvancedLayoutSample(View view) { - startActivity(new Intent(this, LayoutAdvancedSampleActivity.class)); + public void startRecyclerViewSample(View view) { // 列表 + startActivity(new Intent(this, RecyclerViewSampleActivity.class)); } public void startDingDingSample(View view) { diff --git a/sample/src/main/java/me/samlss/broccoli_demo/RecyclerViewSampleActivity.java b/sample/src/main/java/me/samlss/broccoli_demo/RecyclerViewSampleActivity.java index 6d28b2b..830bc69 100644 --- a/sample/src/main/java/me/samlss/broccoli_demo/RecyclerViewSampleActivity.java +++ b/sample/src/main/java/me/samlss/broccoli_demo/RecyclerViewSampleActivity.java @@ -2,14 +2,8 @@ import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; -import android.view.animation.BounceInterpolator; import android.view.animation.LinearInterpolator; import android.widget.ImageView; import android.widget.TextView; @@ -23,6 +17,13 @@ import me.samlss.broccoli.PlaceholderParameter; import me.samlss.broccoli.BroccoliGradientDrawable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + + /** * @author SamLeung * @e-mail samlssplus@gmail.com @@ -104,7 +105,7 @@ private void initData(){ } private void initRecyclerView(){ - mRecyclerView = findViewById(R.id.recyclerview); + mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview); mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); myAdapter = new MyAdapter(); @@ -122,8 +123,9 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { } @Override - public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int i) { + public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, int position) { Broccoli broccoli = mViewPlaceholderManager.get(myViewHolder.itemView); + final int itemPos = position; if (broccoli == null){ broccoli = new Broccoli(); mViewPlaceholderManager.put(myViewHolder.itemView, broccoli); @@ -133,22 +135,22 @@ public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int broccoli.addPlaceholder(new PlaceholderParameter.Builder() .setView(myViewHolder.tvTitle) .setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"), - Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator())) + Color.parseColor("#FF0000"), 0, 1000, new LinearInterpolator())) .build()); broccoli.addPlaceholder(new PlaceholderParameter.Builder() .setView(myViewHolder.imageView) .setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"), - Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator())) + Color.parseColor("#FF0000"), 0, 1000, new LinearInterpolator())) .build()); broccoli.addPlaceholder(new PlaceholderParameter.Builder() .setView(myViewHolder.tvPrice) .setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"), - Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator())) + Color.parseColor("#FF0000"), 0, 1000, new LinearInterpolator())) .build()); broccoli.addPlaceholder(new PlaceholderParameter.Builder() .setView(myViewHolder.tvDescription) .setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"), - Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator())) + Color.parseColor("#FF0000"), 0, 1000, new LinearInterpolator())) .build()); broccoli.show(); @@ -167,10 +169,10 @@ public void run() { return; } - myViewHolder.imageView.setImageResource(mDataList.get(i).imageRes); - myViewHolder.tvPrice.setText("¥ "+String.valueOf(mDataList.get(i).price)); - myViewHolder.tvTitle.setText(mDataList.get(i).title); - myViewHolder.tvDescription.setText(mDataList.get(i).description); + myViewHolder.imageView.setImageResource(mDataList.get(itemPos).imageRes); + myViewHolder.tvPrice.setText("¥ "+String.valueOf(mDataList.get(itemPos).price)); + myViewHolder.tvTitle.setText(mDataList.get(itemPos).title); + myViewHolder.tvDescription.setText(mDataList.get(itemPos).description); } }; mTaskManager.put(myViewHolder.itemView, task); diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index f8b46e1..31b9a4c 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -7,51 +7,47 @@ tools:context=".MainActivity"> + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical">