我试图理解setRecycledViewPool方法实际上与下面的代码行中的RecyclerView一起做什么,其中mrecyclerView是RecyclerView对象:
mrecyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
Run Code Online (Sandbox Code Playgroud)
我阅读了Android文档链接,但我仍然不明白它的作用.有人可以向我解释它的用途以及何时使用它?
java android android-layout android-view android-recyclerview
我正在尝试在Android Studio中编译AndroidCaldavSyncAdapter项目.它甚至工作过,但升级后的Gradle插件版本,从com.android.tools.build:gradle:1.5.0到com.android.tools.build:gradle:2.3.0其停止工作.现在我收到这个错误:
Error:(34, 0) A problem occurred evaluating project ':ACalDAV'.
Run Code Online (Sandbox Code Playgroud)
并
cannot resolve symbol 'builder'在
import com.android.builder.core.DefaultManifestParser
Run Code Online (Sandbox Code Playgroud)
这是build.grade文件:
import com.android.builder.core.DefaultManifestParser
apply plugin: 'com.android.application'
apply from: '../config/quality/quality.gradle'
android {
compileSdkVersion 22
buildToolsVersion '25.0.3'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
defaultConfig {
applicationId "de.we.acaldav"
minSdkVersion 14 …Run Code Online (Sandbox Code Playgroud) 我必须在图标和NavigationView图像中的箭头之间添加左边距:
我知道根据谷歌的规格,这个保证金必须有,16dp但我需要改变它.我试过了:
<dimen tools:override="true" name="design_navigation_icon_padding">64dp</dimen>
<dimen tools:override="true" name="design_navigation_separator_vertical_padding">20dp</dimen>
Run Code Online (Sandbox Code Playgroud)
但仍然没有工作.有任何想法吗?
我正在使用以下代码来制作旋转轮。
@Override
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
for (int i = 0; i < segmentColors.length; i ++)
{
drawDataSet(canvas, i);
}
canvas.drawCircle(getWidth()/2, getHeight()/2, getWidth() - getWidth()/2 - dpToPx(5), mTransparentCirclePaint);
}
protected void drawDataSet(Canvas canvas, int position)
{
int color = segmentColors[position];
float mainArcAngle = ((float) 360/ (float)segmentColors.length);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
if ( position%2 == 0)
paint.setColor(color);
else
paint.setColor(Color.parseColor("#009f2f"));
RectF rect = new RectF(0, 0, getWidth(), getWidth());
canvas.drawArc(rect, (mainArcAngle * position), mainArcAngle, true, paint);
TextPaint mTextPaint = …Run Code Online (Sandbox Code Playgroud) 我是 kotlin 新手,无法弄清楚这个问题。
我有一个不可为 null 的属性,可能会也可能不会使用。因此,我以一种惰性的方式委托它,以便在需要时对其进行初始化。
private val labelAnimator: ObjectAnimator by lazy {
ObjectAnimator.ofFloat(this, "floatingLabelFraction", 0f, 1f)
}
Run Code Online (Sandbox Code Playgroud)
但是,我还需要在每次访问该对象时设置该对象的一些属性。
fun getLabelAnimator(): ObjectAnimator {
labelAnimator.duration = (if (isFloatingLabelAnimating) 300 else 0).toLong()
return labelAnimator
}
Run Code Online (Sandbox Code Playgroud)
但我无法使用自定义 getter,因为该属性是委托的。我如何以最好的方式实现这一目标?
我有一个RelativeLayout我已经设置了背景的drawable. 我能够RelativeLayout在RadioButton检查时将背景更改为另一个背景。但是当它改变时我如何给它一个动画?
代码:activity_main.xml:
<RelativeLayout
android:layout_width="80dp"
android:layout_height="50dp"
android:gravity="center"
android:background="@drawable/original"
android:id="@+id/rel1">
<RadioButton
android:id="@+id/radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
原始.xml(可绘制):
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#ffffff">
</solid>
<corners
android:radius="50dp">
</corners>
</shape>
Run Code Online (Sandbox Code Playgroud)
按下.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#2196F3">
</solid>
<corners
android:radius="50dp">
</corners>
</shape>
Run Code Online (Sandbox Code Playgroud)
Java类:
radio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b){
relativeLayout.setBackgroundResource(R.drawable.pressed);
}
}
});
Run Code Online (Sandbox Code Playgroud) animation android android-animation android-layout android-view
我是RxJava的新手,我想我可能会忽略一些非常基本的东西.所以我创建了Observable一个像这样执行长时间运行的I/O任务.现在我想确保订阅者在Android UI线程上收到其结果:
Observable.create(new ObservableOnSubscribe<Device>() {
@Override
public void subscribe(@io.reactivex.annotations.NonNull final ObservableEmitter<Device> e) throws Exception {
//Long running task
}
}).subscribeOn(Schedulers.io())
Run Code Online (Sandbox Code Playgroud)
如您所见,我已执行了长时间运行的任务Schedulers.io().如何切换回Android UI线程?
所以我有一个非常基本的 RxJava 观察者流工作流程,我从改造中请求一些东西,如果响应成功,我会烘烤成功的消息,如果出现错误,我会烘烤错误消息。
我下面提到的情况是错误情况,我期望来自 API 的错误消息,我将其转换为用户可读的单词并显示为Toast,如下所示,当我使用doOnNext这种doOnError方式时,它会因提到的错误而崩溃。
我throwExceptionIfFailure还添加了方法,它显示了如何转换可读消息以及控制台指向错误的行。
registerNFCTag(body)
.map(result -> throwExceptionIfFailure(result))
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(result -> {
toggleLoaders(true);
appToast(getString(R.string.done_msg) + tagName);
})
.doOnError(throwable -> {
Toasty.error(this, throwable.getLocalizedMessage()).show();
toggleLoaders(true);
})
.subscribeOn(Schedulers.io())
.subscribe();
Run Code Online (Sandbox Code Playgroud)
错误如果这还不够,我也可以发布堆栈跟踪。
java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
Run Code Online (Sandbox Code Playgroud)
ThrowExceptionIfFailure 方法。
public <T> T throwExceptionIfFailure(T res) {
Response result = (Response<?>) res;
if (!result.isSuccessful()) {
try {
String msg = result.errorBody().string();
Log.d(TAG, "throwExceptionIfFailure: "+msg);
if (result.code() == 401 || result.code() == 403) …Run Code Online (Sandbox Code Playgroud) 我将菜单抽屉用作清单,并且 onDrawerClosed 根据 int 值将向用户收费或不保存更改。但是 onDrawerClosed 方法调用了两次,一次使用 int 和正确的值,一次使用 int 和值 0?这导致我的程序同时调用 if 和 else 语句,以便保存更改并提示他们付款。
//Used so that when drawer closed banned list saves
public void drawerListener(){
mDrawer.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
customAdaptor.clearJustChanged();
}
@Override
public void onDrawerClosed(View drawerView) {
System.out.println("Cost of Changes:" + customAdaptor.getUserCostOfChange());
if (customAdaptor.getUserCostOfChange() > 0) {
getBuyAlert(customAdaptor.getUserCostOfChange());
customAdaptor.setUserCostOfChange(0);
}
else {
bannedList = customAdaptor.getBannedList();
databaseReference.child("BannedApps").setValue(bannedList);
}
}
@Override
public void onDrawerStateChanged(int newState) …Run Code Online (Sandbox Code Playgroud) 我buttonViews在垂直线性布局中有 3 个视图 ( )的活动。我正在动态生成(膨胀)这些视图。我想应用一个动画,以便在活动开始时,第一个按钮滑入 -> 100 毫秒延迟 -> 第二个按钮滑入 -> 100 毫秒延迟 -> 第三个按钮滑入。
试图
我尝试以这种方式实现它:
private void setMainButtons() {
ArrayList<String> dashboardTitles = DashboardUtils.getDashboardTitles();
ArrayList<Integer> dashboardIcons = DashboardUtils.getDashboardIcons();
final ViewGroup root = findViewById(R.id.button_container);
for (int i = 0; i < (dashboardTitles.size() < dashboardIcons.size() ? dashboardTitles.size() : dashboardIcons.size()); i++){
final View buttonView = DashboardButtonInflater.getDashboardButton(root, dashboardTitles.get(i), dashboardIcons.get(i), this);
if (buttonView == null) continue;
buttonView.setOnClickListener(this);
root.addView(buttonView);
animateBottomToTop(buttonView, (long) (i*50)); // Calling method to animate buttonView
}
}
//The function that …Run Code Online (Sandbox Code Playgroud) animation android android-animation android-layout android-view
android ×9
android-view ×5
java ×4
animation ×2
rx-android ×2
rx-java2 ×2
build ×1
drawerlayout ×1
getter ×1
gradle ×1
kotlin ×1
listener ×1
properties ×1
rx-java ×1