我有一个有三个的应用程序ProgressBars,每个都有自己的自定义进度Drawable.这些Drawable非常简单 - 每个都是LayerDrawable透明背景图层,透明辅助进度图层和纯色进度图层.
所有三个ProgressBars都以相同的布局显示.
我开始遇到的问题是其中一个ProgressBars没有正确显示 - 它根本不显示任何进展.这仅在某些设备上发生(在运行2.3.3的模拟Nexus One和运行4.1.2的Galaxy SII上确认).
我把一个断点onCreate,并发现前两个ProgressBars有他们的mProgressDrawable属性设置正确的LayerDrawable,但第三个被设置为ColorDrawable.
果然,以下代码返回两个LayerDrawables和一个ColorDrawable:
Drawable blueDrawable = getResources().getDrawable(R.drawable.progress_blue);
Drawable redDrawable = getResources().getDrawable(R.drawable.progress_red);
Drawable greenDrawable = getResources().getDrawable(R.drawable.progress_green);
Run Code Online (Sandbox Code Playgroud)
无论我ProgressBar在布局和代码中移动第三个,或者尝试交换progressDrawable属性,引用我的第三个XML的那个Drawable显示没有进展并给我一个ColorDrawable.
有趣的是,我发现只需在我的drawable文件夹中创建一个新的XML文件就可以解决问题.这让我相信Android打包或加载我的资源的方式存在问题,但我无法弄清楚如何识别和纠正根本问题.
我也无法在新的应用程序中重现该问题.
如何继续追踪此问题的根源?
progressDrawable XML:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="@android:color/transparent" />
</shape>
</clip> …Run Code Online (Sandbox Code Playgroud) 我想在构建阶段对资产做一些事情.这是我的gradle脚本.
project.afterEvaluate{
prepareDependencies.dependsOn("generateMyAssets")
}
task generateMyAssets() {
copy {
from('/') {
include '**/*.html'
filter {
line -> line.replaceAll(/(<img src=\")(?!(.*:.*))/, '<img src="assets:')
}
}
into 'assetsRegxped/'
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果有味道,如何灵活检索资产文件夹的名称(路径).另外我怎么才能改变构建版本?
我想用XML创建一个矩形形状,它需要一个弯曲的形状.这可以通过XML标记或以编程方式实现吗?
我现在的代码:
<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
android:topLeftRadius="45dp"
android:topRightRadius="45dp"
android:bottomLeftRadius="45dp"
android:bottomRightRadius="45dp" />
<solid
android:color="#4F4F4F" />
<stroke
android:width="3dp"
android:color="#878787" />
</shape>
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?

我的想法如下:

矩形必须用曲线转换.
我目前有一个使用gradle并与travis.ci集成的Android项目,它有不同的productFlavors和buildTypes.当然后在travis.ci上执行"connectedCheck"任务时,它会尝试打包所有构建变体(所有类型和类型的组合).其中一些失败,因为发布版本需要密码输入,我现在无法自动化.有没有办法告诉travis.ci只构建和测试Android项目的某个构建变体?
continuous-integration android gradle travis-ci android-productflavors
假设我们有四种构建类型:debug,qa,beta和release.
我们可以为特定变体定义依赖关系,如下所示:
dependencies {
// These dependencies are only included for debug and qa builds
debugCompile 'com.example:lib:1.0.0'
qaCompile 'com.example:lib:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不重复工件描述符的情况下为多个变体编译这些依赖项?
例如,我想做这样的事情:
dependencies {
internalCompile 'com.example:lib:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
在哪里internalCompile指定包含库debug和qa构建的库.
我相信解决方案在于定义一个新的Gradle配置,但如果我创建一个internalCompile配置,我不确定如何确保只为这些依赖项编译qa和debug构建.
我已经看到过滤器方法文档,其中显示调用过滤器会取消所有先前未执行的过滤请求,并发布将在稍后执行的新过滤请求.
但我收到的实际回调有些不同.在我的实现中,它没有取消先前的过滤请求,并publishResults()在最近的搜索条件之后调用先前搜索条件的方法.日志如下:
10-03 17:49:41.781: E/TAG(2150): onTextChanged first Criteria
10-03 17:49:41.781: E/TAG(2150): performFiltering first Criteria
10-03 17:49:41.961: E/TAG(2150): onTextChanged second Criteria
10-03 17:49:41.961: E/TAG(2150): performFiltering second Criteria
10-03 17:49:42.195: E/TAG(2150): publishResults second Criteria
10-03 17:49:42.219: E/TAG(2150): publishResults first Criteria
Run Code Online (Sandbox Code Playgroud) 我一直试图连接到Teradata
Class.forName("com.teradata.jdbc.TeraDriver");
String connectionString = "jdbc:teradata://xxx.xxxxxx.com/database=xxxxxx, tmode=ANSI, charset=UTF8";
String user = "Rocket512";
String password = "aui8mn5";
Connection conn = DriverManager.getConnection(connectionString, user, password);
Run Code Online (Sandbox Code Playgroud)
得到以下
Exception in thread "main" com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database]
[TeraJDBC 14.10.00.17] [Error 8017] [SQLState 28000] The UserId, Password or Account is invalid.
at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:300)
at com.teradata.jdbc.jdbc.GenericLogonController.run(GenericLogonController.java:666)
at com.teradata.jdbc.jdbc_4.TDSession.<init>(TDSession.java:216)
Run Code Online (Sandbox Code Playgroud)
我知道主机是正确指定的,因为我没有得到UnknownHost Exception.
另外我已经仔细检查了我的用户名和密码是否正确.
我运行@ beni23建议的查询(谢谢)
select *
from dbc.logonoff
where logdate >= date '2013-10-31'
Run Code Online (Sandbox Code Playgroud)
这是我得到的结果

什么是Bad Password?我使用SQL Assistant使用这个密码,效果很好.为什么我不能用Java连接?
我正在创建一个非常简单的应用程序,具有免费和付费版本,为此我使用 Android Gradle 插件中出色的 ProductFlavors 功能。我了解应该如何配置 build.gradle 文件并编写它,所以我的构建选项是:
看起来如下
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.someconfig
}
}
productFlavors {
free {
packageName "com.somepackagename.appfree"
}
paid {
packageName "com.somepackagename.appPaid"
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想做的就是限制一些功能并将 AdMod 添加到免费版本中,我该怎么做?我是否在主 java 类中添加 if-else 语句来检查它是免费还是付费?或者我可以覆盖免费目录中的java类吗?我该怎么做呢?
我想将应用程序更改为versionNameAndroidManifest 文件中为我正在构建的特定风格定义的任何内容。
因此,如果我只构建我拥有的 4 种已定义风格中的一种,例如:
gradle assembleFlavor1Debug
我期望Flavor1具有与其特定清单定义的版本名称相同的版本名称(因为清单文件的合并),但这并没有发生。
在构建期间,我如何知道正在构建哪种特定风格?
因为如果我知道正在运行什么风格,
我可以versionName从清单中提取相应的内容并将其设置为android.defaultConfig.versionName,
这解决了我的问题。
有人可以告诉我为什么下面的代码用ArrayList中的最新条目覆盖ArrayList中的每个元素?或者如何正确地将新的hashmap元素添加到我的ArrayList中?
ArrayList<HashMap<String, String>> prodArrayList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> prodHashMap = new HashMap<String, String>();
public void addProd(View ap)
{
// test arraylist of hashmaps
prodHashMap.put("prod", tvProd.getText().toString());
prodArrayList.add(prodHashMap);
tvProd.setText("");
// check data ///
Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());
for(int i=0; i< prodArrayList.size();i++)
{
Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
}
}
Run Code Online (Sandbox Code Playgroud)