根据谷歌在设计部分的http://developer.android.com/中所说的,开发人员应该考虑三个目标:
我们(开发人员)知道哪些BTW.
通过查看Play商店中的许多成功应用程序,您可以看到它们是按照Google设计指南设计的,并且几乎使用谷歌在他们自己的应用程序中使用的相同 组件和主题以及样式.
许多人确实喜欢这些设计以及主题和组件方面的这些Android标准,但当你看到Playstore中的一些应用程序或某些硬件制造商的应用程序(如三星)已经构建了他们的特殊应用程序(如galaxy note 10.1 note take app)或asus天气应用程序或在Playstore中的Timely应用程序,在功能和课程设计方面很棒,你可以看到他们使用不同类型的设计和组件.
典型的Android应用程序使用操作栏,许多应用程序将包含导航抽屉.
像这些:
动作栏: 
导航抽屉:

和Android上的其他标准组件.
但是,一些开发人员如何使应用程序如此美观和功能完美(几乎!)像Timely应用程序,而不是使用谷歌定义的许多Android典型组件.
这是用户可以看到他/她可以设置一个或只是观看时钟的警报的屏幕:

现在我想到的问题是:
还有许多其他类似的应用程序(没有100%那么相似)都有自己独特的设计.
据我所知,没有太多的网站提供Android的自定义组件,如http://androidviews.net/所以我们似乎被迫制作我们自己的组件,这是耗时的,在这个时候(2013年)isn不完美,而对于ios,其他公司生产的定制组件很多.
我还查看了Timely应用程序网站,在他们的FAQ部分中有一个地方,他们说他们会透露他们做了主题,着色和组件的内容和方式,但因为他们的公告没有时间表,我不知道我喜欢呆在黑暗的地方,我来这里问你专家.
这是报价从他们的网站:
我是开发人员,无法弄清楚你是如何做这些动画和色彩效果的.
我们计划将来有一个工程博客.敬请关注!
如果你们知道如何制作这样的应用程序,或者你知道他们使用的动画,组件,技巧和黑客的一部分那么你就是我的一天.
android android-animation android-layout android-theme android-view
我正在尝试与新的Gradle Android构建系统一起运行我的Robolectric测试,但我一直在访问我的主项目的资源.
我将构建拆分为两个单独的项目,以避免java和androidgradle插件之间发生冲突,因此目录结构大致如下所示:
.
??? build.gradle
??? settings.gradle
??? mainproject
? ??? build
? ? ??? classes
? ? ? ??? debug
? ??? build.gradle
? ??? src
? ??? main
? ??? AndroidManifest.xml
? ??? ...
??? test
??? build.gradle
??? src
??? test
??? java
??? ...
??? test
??? MainActivityTest.java
??? Runner.java
??? ServerTestCase.java
??? StatusFetcherTest.java
Run Code Online (Sandbox Code Playgroud)
我build.gradle在test/目前看起来是这样的:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.stanfy.android:gradle-plugin-java-robolectric:2.0'
}
} …Run Code Online (Sandbox Code Playgroud) 我想为我的测试指定依赖关系,并在阅读Gradle依赖关系管理基础之后我虽然可以添加testCompile对我的依赖声明的调用,如下所示:
dependencies {
compile group: 'com.squareup.dagger', name: 'dagger', version: '1.0.0'
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile group: 'com.squareup', name: 'fest-android', version: '1.0.1'
}
Run Code Online (Sandbox Code Playgroud)
但是,这会出现此错误消息:
> Could not find method testCompile() for arguments [{group=junit, name=junit, version=4.11}] on project ':simstatus'.
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
如果我在这里使用错误的术语,请提前道歉.
在Haskell中推广两种或更多类型的惯用方法是什么,以便您可以在避免样板代码的同时推迟对它们进行模式匹配?
举一个具体的例子:在我的应用程序中,我想传递执行期间可能发生的错误.这些错误来自不同的模块,所以我不直接控制它们:
data ErrorCatA = WTFError String | OMGError String
data ErrorCatB = BadError Int | TerribleError Float
Run Code Online (Sandbox Code Playgroud)
现在我想传递这些错误类别的某种形式的超类型,所以我可以像这样处理它们:
handleError :: GenericError -> IO ()
handleError err =
putStrLn $ case err of
WTFError s -> "WTF?! " ++ s
OMGError s -> "OMG?! " ++ s
BadError i -> if i > 5 then "Really bad" else "Not that bad"
TerribleError f -> "Terrible! " ++ show f
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我通过创建这样的包装器类型得到了最接近的:
data GenericError = CatA ErrorCatA | CatB ErrorCatB …Run Code Online (Sandbox Code Playgroud) 我使用Yeoman使用yo webappgenerator命令创建了一个快速项目框架.在生成的Gruntfile中,我看到它是编译CoffeeScript的设置,但它似乎只是将编译后的文件粘贴在一个tmp文件夹中.
coffee: {
dist: {
files: {
'.tmp/scripts/coffee.js': '<%= yeoman.app %>/scripts/*.coffee'
}
},
},
Run Code Online (Sandbox Code Playgroud)
在开发过程中如何将这些包含在项目中.我没有使用RequireJS.
自耕农博士对如何使用咖啡因不清楚.他们只提到它会自动编译.
我正在尝试使用gradle签名插件签署 Android AAR工件.不幸的是,我NullPointerException在这个过程中得到了一个相当无助的东西:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':library:signArchives'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':library:signArchives'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
[...snip...]
at org.gradle.launcher.Main.main(Main.java:37)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.lang.NullPointerException
at org.bouncycastle.openpgp.PGPSignatureGenerator.initSign(Unknown Source)
at org.bouncycastle.openpgp.PGPSignatureGenerator.initSign(Unknown Source)
at org.bouncycastle.openpgp.PGPSignatureGenerator$initSign.call(Unknown Source)
at org.gradle.plugins.signing.signatory.pgp.PgpSignatory.createSignatureGenerator(PgpSignatory.groovy:54)
at …Run Code Online (Sandbox Code Playgroud) 我有一个工作的yeoman项目,我运行服务器grunt server,它工作正常.
我将整个东西放入git仓库,并将其检出新文件夹...
当我尝试做'grunt服务器'时,它说:
致命错误:无法找到当地的咕噜声.
如果您看到此消息,则表示未找到Gruntfile或者您的项目未在本地安装grunt.
我无法在本地安装grunt到该目录,并且能够找到并使用GruntFile.
我还是Haskell的新手,我很难找到函数的正确类型签名.
我有这个工作,使用相当简单的功能http-conduit,authenticate-oauth这是副作用,所以我不太关心返回值:
executeOAuthRequest oauth cred request =
withManager $ \manager -> do
signed <- signOAuth oauth cred request
http signed manager
Run Code Online (Sandbox Code Playgroud)
我想指定正确的类型签名,但GHCi的输出对我来说非常可怕:
executeOAuthRequest
:: (monad-control-0.3.2.3:Control.Monad.Trans.Control.MonadBaseControl
IO m,
Control.Monad.Trans.Resource.Internal.MonadThrow m,
Control.Monad.Trans.Resource.Internal.MonadUnsafeIO m,
Control.Monad.IO.Class.MonadIO m) =>
OAuth
-> Credential
-> Request
-> m (Response (ResumableSource (ResourceT m) ByteString))
Run Code Online (Sandbox Code Playgroud)
前三个参数(OAuth,Credential,Request)道理给我,但我不明白的长期前提m,不知是否有必要为GHCI建议指定完整的返回值.
我不想仅仅提供正确的签名,而是想了解查找和减少正确签名背后的过程.
假设我有一个包含一个列表或一组标签的 DataFrame,我想根据某个标签是否是该行的一部分来过滤 DataFrame,用 Pandas 实现这一点的最惯用的方法是什么?
import pandas as pd
df = pd.DataFrame({
'amount': [15, 20, 40],
'tags': [["Food", "Eating Out"], ["Food", "Groceries"], ["Clothes"]],
'description': ["Garfunkel's", "Tesco", "Hollister"]
})
Run Code Online (Sandbox Code Playgroud)
我有一段有效的代码,但编写起来相当笨拙:
criterion = lambda row: 'Food' in row['tags']
df[df.apply(criterion, axis=1)]
Run Code Online (Sandbox Code Playgroud)
结果应该是:

在我自定义的Halogen/Purescript项目中,我遵循AJAX示例中的模式,在这里我将我的行为分解为纯粹Input的和有效Request的.
我想更改我的事件处理程序以使用该preventDefault行为,但不明白这会对UI函数的类型产生什么影响.
我通过以下方式更改事件处理程序,对AJAX示例进行了相同的更改:
之前:
H.button [ A.classes [B.btn, B.btnPrimary]
, A.disabled busy
, A.onclick (\_ -> pure (handler code))
] [ H.text "Compile" ]
Run Code Online (Sandbox Code Playgroud)
后:
H.a [ A.classes [B.btn, B.btnPrimary]
, A.href "#compile"
, A.disabled busy
, A.onclick (\_ -> E.preventDefault $> pure (handler code))
] [ H.text "Compile" ]
Run Code Online (Sandbox Code Playgroud)
(完全差异在这里可用)
我最终得到这种类型的错误:
Cannot unify type
Example.Ajax.Input
with type
Halogen.HTML.Events.Monad.Event Halogen.HalogenEffects<(http ::
Example.Ajax.HTTP | u32519)> Example.Ajax.Input
Run Code Online (Sandbox Code Playgroud)
此时,我有点迷失是否需要调整UI函数的类型签名或者我preventDefault以错误的方式应用修饰符.
我不使用Proguard.该项目正在成功构建,但当我尝试在设备上运行时,它显示此错误.我在Android Studio 3.0中使用Kotlin项目工作,这真的很糟糕.我决定切换回2.3 AS,但问题仍然是一样的.日志较小但异常文本相同.
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
tasks.withType(JavaCompile) {
options.fork = true
options.incremental = true
}
android {
def rootProject = rootProject.ext
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode rootProject.versionCode
versionName rootProject.versionName
testInstrumentationRunner rootProject.testInstrumentationRunner
vectorDrawables.useSupportLibrary = true
// multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
//flavorDimensions "content"
production { …Run Code Online (Sandbox Code Playgroud) 我一直在阅读Litho的文档,我找到了这个代码示例
@LayoutSpec(events = { ColorChangedEvent.class })
class ColorComponentSpec {
...
@OnCreateLayout
static ComponentLayout onCreateLayout(
Context c,
@Prop EventHandler colorChangedHandler,
@FromPrepare int color) {
...
ColorComponent.dispatchColorChangedEvent(
colorChangedHandler,
color);
...
}
}
Run Code Online (Sandbox Code Playgroud)
@FromPrepare注释有什么作用?
android ×6
gradle ×4
gruntjs ×2
haskell ×2
types ×2
yeoman ×2
android-view ×1
coffeescript ×1
debugging ×1
facebook ×1
filter ×1
git ×1
halogen ×1
java ×1
kotlin ×1
litho ×1
pandas ×1
purescript ×1
python ×1
robolectric ×1