使用support-v4库22.1.0 android支持嵌套滚动(pre android 5.0).不幸的是,这个功能并没有真正记录.有两个接口(NestedScrollingParent
和NestedScrollingChild
)以及两个辅助委托类(NestedScrollingChildHelper
和 NestedScrollingParentHelper
).
有没有人在Android上使用NestedScrolling?
我尝试设置一个小例子,我使用NestedScrollView实现两者NestedScrollingParent
和NestedScrollingChild
.
我的布局看起来像这样:
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:id="@+id/header"
android:layout_width="match_parent" android:layout_height="100dp"
android:background="#AF1233"/>
<android.support.v4.widget.NestedScrollView
android:id="@+id/child"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#12AF33"
android:text="@string/long_text"/>
</FrameLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)
我想在(id = parent)中显示a header view
和另一个NestedScrollView
(id = child NestedScrollView
).
我们的想法是,在运行时使用以下方法调整子滚动视图的高度OnPredrawListener
:
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle …
Run Code Online (Sandbox Code Playgroud) 有没有人知道Pinterest或Tumblr如何实现"刷卡"方法.
即在Pinterest上,您可以点击新闻Feed上的帖子.比DetailActivity
已启动并显示所选帖子的详细信息.您可以按后退按钮返回新闻Feed活动,或者您可以向左滑动(详细信息活动)以返回新闻Feed活动.
视频:http://youtu.be/eVcSCWetnTA
通常我会使用overridePendingTransition()
,但overridePendingTransition()
需要动画(像资源ID R.anim.foo
).仅当用户进行滑动手势时,Pinterest和Tumblr才会启动动画.他们还根据手指移动支持某种"逐帧动画".因此,他们跟踪手指移动的距离,并将过渡动画设置为相应的百分比值.
我知道如何使用"真正的java"动画/ AnimatorSet对象FragmentTransaction
来动画片段替换.使用片段我必须覆盖onCreateAnimator()
,但我不知道如何使用Activities实现类似的东西.活动有onCreateAnimator()
(或类似的东西)吗?也不知道如何滑动行为,因为它现在没有启动动画,但更多的是逐步改变Window/Activity/Fragment的属性或者其他......
有什么建议?
编辑:我在youtube上找到了一个pinterest应用程序的视频:http://youtu.be/eVcSCWetnTA 这就是我想要实现的内容.
我猜Pinterest正在使用Fragments并onCreateAnimator()
实现"向后滑动".由于我的应用程序已经在一个活动中已经有Fragment和ChildFragments,因此如果我可以为活动实现它,那将更容易.
再一次:我知道如何检测滑动手势,这不是我要求的.观看youtube视频:http://youtu.be/eVcSCWetnTA
更新:我创建了一个小库,它与Pinterest或Tumblrs实现的行为并不完全相同,但对于我的应用程序,这似乎是一个很好的解决方案:https://github.com/sockeqwe/SwipeBack? source = c
我有一个非常愚蠢的问题,但我几小时后就坐在我的应用程序前面,但我无法理解问题所在.
我有一个Android应用程序(用kotlin编写),我想制作两种产品风格并覆盖产品风格的类/文件:
所以我的gradle脚本是这样的:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
...
productFlavors {
foo {
applicationId "com.foo"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的文件结构如下:
- src
- androidTest
- foo
- java
- com
- example
- Bar.kt
- main
- java
- com
- example
- Bar.kt
- test
Run Code Online (Sandbox Code Playgroud)
所以基本上我想Bar.kt
在foo
产品风格中覆盖文件,但不知何故它不起作用:它说类Bar是重复的.
任何提示?
我的应用需要与其他应用用户同步(在自己的设备上).我还想支持离线编辑,当用户连接到互联网时,这些编辑会与其他协作用户同步.
因此,用户A改变(当他离线时)一些数据(换句话说,他将更新数据库条目)或向数据库添加新记录.当用户A连接到互联网时,所有更改和新记录都将传递给其他协作用户.因此,用户B将获得更改/更新,并可以将其插入/更新到用户B本地设备数据库中.
但我需要确保数据库条目的ID在整个系统中是唯一的.因此我需要使用像UUID这样的东西.
我的问题:在android sqlite数据库表中使用UUID(String/Varchar)作为主键而不是自动递增的整数是不是一个坏主意?
我想通过使用字符串(UUID有36个字符)作为主键会出现性能问题.
我想索引uuids而不是整数需要更长的时间(比较字符串与比较整数).我还猜测,当我使用UUID时,每次插入新的数据库记录/条目时,数据库都需要重新索引主键列,因为它们的主键索引不再处于排序顺序(这将是我何时使用整数自动递增主键,因为每个未来的记录都会在末尾添加,因为新的自动递增的主键始终是目前为止最大的数字,因此索引将自动按排序顺序排列).我还需要做的是加入2到3张桌子.我还猜测,比较JOINS上的字符串而不是整数会减慢数据库查询的速度.
但是我无法看到实现这种协作同步系统的任何其他可能性,所以我必须使用UUID,对吧?
另一种可能性是使用整数自动增量主键并使用第二列uuid.因此,为了处理用户本地设备,我将使用此主键(整数)进行JOINS等,而我将使用uuid列与其他用户进行同步.
你们对这种方法有什么看法,或者你认为有多少工作,因为你不会期望UUID直接作为主键出现重大的性能问题?
还有其他建议吗?
是否可以在Gradle(在android studio中)指定一个依赖于当前项目边界之外的另一个gradle项目?例如,相对路径如下:
dependencies {
compile project('../../stdlib/dagger')
}
Run Code Online (Sandbox Code Playgroud)
所以我特里是这样的:
我有一个Android应用程序.结构如下所示:
我有一个包含3个子模块的gradle android库项目:
我想要的是将dagger,utils,http模块编译到MyApp项目中.
stdlib库模块正在大力开发,并随着MyApp的发展而增长.因此,每次我做一点改动时,我都不想将它们推入maven存储库.
那么有可能以某种方式链接其他gradle项目吗?我正在寻找一个临时解决方案.一旦源稳定,我会将std库推送到maven存储库.
此外,作为解决方法,可以使用sourceSet的解决方案.我还考虑在MyApp中创建一个库文件夹,它是stdlib的符号链接,但我没有按预期工作:
Run Code Online (Sandbox Code Playgroud)dependencies { compile project(':libraries:dagger') }
知道如何在gradle中解决这种依赖吗?
如果一个observable完成了,我是否还必须取消订阅/处置(在RxJava2中)observable以删除Observer(防止内存泄漏),或者一旦发生onComplete
或onError
事件发生,这是由RxJava内部处理的吗?
对其他类型的像什么Single
,Completable
,Flowable
等.
我可能错过了一些东西,但我认为像@Singleton这样的Scopes用来定义"范围生命周期".
我在Android应用程序中使用Dagger 2(但我不认为这个问题与Android有关).
我有1个模块:
@Module public class MailModule {
@Singleton @Provides public AccountManager providesAccountManager() {
return new AccountManager();
}
@Singleton @Provides public MailProvider providesMailProvider(AccountManager accountManager) {
return new MailProvider(accountManager);
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个不同的组件,@Singleton
范围:
@Singleton
@Component(modules = MailModule.class)
public interface LoginComponent {
public LoginPresenter presenter();
}
@Singleton
@Component(
modules = MailModule.class
)
public interface MenuComponent {
MenuPresenter presenter();
}
Run Code Online (Sandbox Code Playgroud)
两者都有,MenuPresenter
并且LoginPresenter
有一个@Inject
构造函数.虽然MenuPresenter期望MailProvider
作为参数,但LoginPresenter需要AccountManager
:
@Inject public MenuPresenter(MailProvider mailProvider) { ... }
@Inject public LoginPresenter(AccountManager …
Run Code Online (Sandbox Code Playgroud) 即时通讯使用php 5.4.6和MySQL 5.5.29,我将UNIX TIMESTAMP转换为MYSQL DATETIME,反之亦然.Mysql和php在同一台本地机器上运行.
我有一个简单的mysql表
CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);
Run Code Online (Sandbox Code Playgroud)
要插入数据我使用php PDO和mysql NOW().这很好,正确的日期时间存储在数据库中.
我的计划是在客户端使用unix时间戳(服务器端的php和mysql).
所以我想向我的客户提供unix时间戳.因此我使用MySql UNIX_TIMESTAMP()函数直接在查询中进行转换.
所以示例查询如下所示:
SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry
Run Code Online (Sandbox Code Playgroud)
结果:created = 2013-02-14 20:47:35 TS = 1360871255
所以现在我想做另一种方式,我传递一个UNIX时间戳,并希望将它与我的数据库中的条目进行比较.不幸的是我无法编写有效的PHP脚本.我不知道为什么,但是当我将相同的时间戳(1360871255)传递给PHP时,我不会使用此方法获得2013-02-14 20:47:35:
public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}
Run Code Online (Sandbox Code Playgroud)
当我打电话给DateTime(1360871255)时会返回2013-02-14 20:02:35这不是原来的DateTime.
我知道,我不需要将1360871255格式化为Ymd H:m:s以在MYSQL中使用它,但1360871255似乎不是我预期的时间(并且MYSQL UNIX_TIMESTAMP已经返回).
我想要做的是一个简单的查询,向我显示比某个时间戳更早的条目,这样的简单:
SELECT * FROM Entry WHERE created < 1360871255
Run Code Online (Sandbox Code Playgroud)
但正如我之前提到的,查询结果不是预期的,因为1360871255似乎不是正确的时间.
我没有为php中的mysql连接指定任何特殊时区.
有什么建议?
我想将库部署到我的公司远程存储库.
这是我第一次将库项目部署到远程存储库.
我收到以下错误消息:
org.sonatype.aether.transfer.ArtifactNotFoundException:找不到工件com.http:http:jar:0.0.1 in internal.repo(http://jenkins.internal.com/)
也许我理解完全错误,但错误消息说,在远程存储库中不存在我第一次尝试部署的工件.所以当然没有这样的神器.当我尝试上传工件时,为什么maven会尝试获取工件?
我的pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.http</groupId>
<artifactId>httpkit</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>httpkit</name>
<properties>
<platform.version> 4.1.1.4</platform.version>
</properties>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${platform.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- Deploy to internal maven repository -->
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Internal Repository</name>
<url>http://jenkins.internal.com/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.5.3</version>
<configuration>
<androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
<assetsDirectory>${project.basedir}/assets</assetsDirectory>
<resourceDirectory>${project.basedir}/res</resourceDirectory>
<nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory>
<sdk>
<platform>16</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
</configuration>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
我打电话 …
我想构建一个小型移动应用程序(Android和iOS)和一个带有REST Api的小后端服务器.
我的应用用户(Android或iOS)需要在Facebook上登录.我通过使用facebooks mobile sdk来做到这一点.登录成功后,facebook sdk将返回authentificationToken,现在在用户智能手机上.
这个想法如下:每当我的应用程序需要一些数据时,应用程序将通过HTTPS与我的服务器后端(REST)进行协作.例如:应用程序进行简单的HTTP GET并传递检索到的Facebook authenticationToken.我的服务器获取此facebook authenticationToken并使用此令牌来确定用户是否经过身份验证并检索Facebook个人资料信息(名字,姓氏等).因此,服务器也与facebook联系,并为HTTP GET请求生成个性化响应.
我的问题是:
Bt:你知道一个适用于iOS和Android的好RSA lib吗?