我想让Travis构建我的Android项目.它尝试下载库时失败ConstraintLayout.你知道我要做些什么才能让它发挥作用吗?
我的.travis.yml是这样的:
language: android
jdk:
- oraclejdk8
android:
components:
- platform-tools
- tools
- build-tools-23.0.2
- android-23
- extra-android-support
- extra-android-m2repository
- extra-google-m2repository
Run Code Online (Sandbox Code Playgroud)
我build.gradle是:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "my.example.bdd"
minSdkVersion 9
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha2'
testCompile 'junit:junit:4.12'
androidTestCompile …Run Code Online (Sandbox Code Playgroud) 目前,通过使用默认动画师android.support.v7.widget.DefaultItemAnimator,这是我在排序过程中遇到的结果
DefaultItemAnimator动画视频: https ://youtu.be/EccI7RUcdbg
public void sortAndNotifyDataSetChanged() {
int i0 = 0;
int i1 = models.size() - 1;
while (i0 < i1) {
DemoModel o0 = models.get(i0);
DemoModel o1 = models.get(i1);
models.set(i0, o1);
models.set(i1, o0);
i0++;
i1--;
//break;
}
// adapter is created via adapter = new RecyclerViewDemoAdapter(models, mRecyclerView, this);
adapter.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
但是,我更喜欢提供自定义动画,而不是排序时的默认动画(notifyDataSetChanged).旧物品将从右侧滑出,新物品将向上滑动.
预期的动画视频: https ://youtu.be/9aQTyM7K4B0
几年前,我通过使用LinearLayout+ 达到了这个效果View,因为那个时候我们还RecyclerView没有.
这就是动画的设置方式
PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1.0f, 0f);
PropertyValuesHolder translationX = PropertyValuesHolder.ofFloat("translationX", …Run Code Online (Sandbox Code Playgroud) android android-animation notifydatasetchanged android-recyclerview
我想在这些方面做点什么:
我能够显示提示android:hint="Email Address"但无法显示帮助文本 - 这将是您的电子邮件用户名
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="15"
android:hint="Username"
app:et_helper="Username is preferably your registered email"/>
</android.support.design.widget.TextInputLayout>`
Run Code Online (Sandbox Code Playgroud)
我得到的只是,并且没有用户名最好是您在edittext下面注册的电子邮件:
输出:
任何指针赞赏.谢谢.
android android-layout android-edittext androiddesignsupport android-textinputlayout
随着Android Studio 3.0 Beta版的发布,android studio提供下一代dex编译器,D8编译代码并构建android APK.目前D8可供预览.
查看更多详细信息:https: //android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
如何在android studio中使用D8启用构建?
我有一个ViewModel它有它应该从采取的依赖Fragment的arguments。
所以它是这样的:
class SomeViewModel(someValue: SomeValue)
Run Code Online (Sandbox Code Playgroud)
现在这个片段SomeValue在它的争论中收到了这样的:
class SomeFragment : Fragment() {
val someViewModel: SomeViewModel by viewModel()
companion object {
fun newInstance(someValue: SomeValue) = SomeFragment().apply {
arguments = bundleof("someKey" to someValue)
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何添加SomeValue从Fragment's argumentsto Koin's 模块中获取的内容。
有没有办法让片段对 Koin 依赖图有所贡献?
我正在尝试使用Android Studio 2.2预览1,但如果我创建一个新项目并添加一个简单的EditText并尝试运行,我收到以下错误.
05-20 15:53:00.748 11798-11798/br.com.tutorialandroid.sqlite E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.tutorialandroid.sqlite, PID: 11798
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.tutorialandroid.sqlite/br.com.tutorialandroid.sqlite.MainActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class EditText
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5832)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class EditText
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:770)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:933)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:933)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
at …Run Code Online (Sandbox Code Playgroud) 我读过这篇文章Stripe - 如何处理订阅免费计划,并且在注册时不需要信用卡,并且发现它非常有帮助,但我仍然有一个问题.
我的应用程序有两个付费计划:'基本'和'专家'.注册用户不选择计划,也不输入卡详细信息.基本上,用户在前14天使用通用试用计划,在此试用期结束后,用户必须选择付费计划并输入卡详细信息.
处理此试验的最佳方法是什么?我在想这些方法:
a)由于我不知道用户在试用期满后将选择哪种付费方案,我无法使用Stripe试用期功能.
来自Stripe Docs:创建计划时,您可以设置的其中一个选项是试用期将持续多长时间.如果您确实选择提供试用期,则在试用期结束之前,您注册的客户将不会首次收费.
我想创建一个名为'trial'的条纹计划,金额设置为0.00美元,试用期为14天,间隔为2周.通过这种方式,我将能够收听Stripe webhook customer.subscription.updated以确定试用版是否已过期并相应地更新数据库.我不确定这是否是一个好方法,因为它将为此试用计划生成发票(它被设置为订阅).我喜欢Stripe webhooks.有没有更好的方法呢?
b)另一种选择是只在Stripe中有付费计划并在试用期到期时创建Stripe订阅并且用户必须选择计划并输入卡详细信息.这样我就不会使用Stripe检查试用版是否过期.我将检查用户登录以确定试用版是否仍处于活动状态.
谢谢你的帮助!
目前,我有以下对话框,我将对其项目执行展开/折叠动画.
该对话框通过以下代码创建
import android.support.v7.app.AlertDialog;
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
final AlertDialog dialog = builder.setView(view).create();
final ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
ViewTreeObserver obs = view.getViewTreeObserver();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
obs.removeOnGlobalLayoutListener(this);
} else {
obs.removeGlobalOnLayoutListener(this);
}
// http://stackoverflow.com/questions/19326142/why-listview-expand-collapse-animation-appears-much-slower-in-dialogfragment-tha
int width = dialog.getWindow().getDecorView().getWidth();
int height = dialog.getWindow().getDecorView().getHeight();
dialog.getWindow().setLayout(width, height);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当执行动画时,这是副作用.
请注意,动画后对话框中不需要的额外白色区域不是由我们的自定义视图引起的.它是对话框本身的系统窗口白色背景.
我倾向于使对话框的系统窗口背景变得透明.
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
final AlertDialog dialog = builder.setView(view).create();
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)
虽然不再看到不需要的白色背景,但对话框的原始边距也消失了.(对话框宽度现在是全屏宽度)
如何在不影响保证金的情况下使其透明?
有没有办法使用OBD检测AC(空调)和Window(打开/关闭).
我在下面提到了OBD阅读器的链接,但我无法找到任何方法来检测AC(空调)和窗口(打开/关闭).