小编One*_*rld的帖子

如何完全覆盖9-PATCH-PNG?

我尝试通过在按钮背景和按钮图标上放置一个半透明的PNG文件来实现悬停效果(按下按钮时的效果).不幸的是,按钮背景文件是一个9-PATCH-PNG,它在这里引起了一些麻烦:它"吞下"其层顶部的所有东西,并且不允许覆盖九个补丁-png的可伸展区域(细线周围) .换句话说,9 PATCH PNG的顶部和左边缘的黑线不仅导致拉伸,还导致填充行为.

删除9-Patch-Information不是一个好的解决方案.

在这里你可以看到我的按钮.蓝色背景是9 PATCH PNG.按钮周围的细线是不需要的.

替代文字

此图层列表分配给按钮属性"background":

<?xml version="1.0" encoding="utf-8"?>
<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:drawable="@drawable/home_btn_bg_blue_without_padding" />
  <item>
    <bitmap
      android:src="@drawable/home_icon_test"
      android:gravity="center" />
  </item>
  <item
    android:drawable="@drawable/layer_black_50" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在每个边框上将图层的偏移设置为"-1"无效.你有什么建议吗?

更新

我尝试了跟随,这将避免缩放,从这里建议.但也没有工作:

<!-- To avoid scaling, the following example uses a <bitmap> element with centered gravity: -->
<item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
Run Code Online (Sandbox Code Playgroud)

我的版本(还有9-patch-png的可伸展区域未被发现):

替代文字

<?xml version="1.0" encoding="utf-8"?>
<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:drawable="@drawable/home_btn_bg_blue_hover_without_padding" />
  <item>
    <bitmap
      android:src="@drawable/home_icon_test"
      android:gravity="center" />
  </item>
  <item>
    <bitmap android:src="@drawable/layer_black_100"
          android:height="100dp"
          android:width="100dp"/></item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

更新2

这对我有用吗?在Android上触摸覆盖图像是否透明?

android layer nine-patch android-layout

6
推荐指数
1
解决办法
3855
查看次数

如何检查视图小部件的类型?

如何工作:

 if(findViewById(ResIdWithUnkownType) instanceof Bitmap)
 {
       Bitmap bitmap = (Bitmap) findViewById(ResIdWithUnkownType);
 } else if(findViewById(ResIdWithUnkownType) instanceof ImageView)
 {
       ImageView = (ImageView) findViewById(ResIdWithUnkownType);
 }
Run Code Online (Sandbox Code Playgroud)

android android-widget imageview android-layout

6
推荐指数
1
解决办法
6451
查看次数

Android的位置警报?

启动我的应用程序时,应将几个POI坐标添加到Android系统.几个小时后,我的应用程序关闭,用户走近其中一个POI,他将收到通知,例如通过状态消息.

对我的方案是正确的做法?Android中有更多可用的东西来实现这一目标吗?

public void addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent)

android location-aware location-based-service android-location android-alarms

6
推荐指数
1
解决办法
3535
查看次数

Android是否使用minSdkVersion &lt;24来对Java 8 Iterable.forEach()进行糖化?

听到Google的desugar项目令我感到非常兴奋,因为我必须提供支持minSdkVersion 17

我继续尝试了一个简单的Java 8示例:

List<String> myList = Arrays.asList("element1","element2","element3");
myList.forEach(element -> System.out.println(element));
Run Code Online (Sandbox Code Playgroud)

但是,Android Studio说 Call requires API level 24 (current min is 17): java.lang.Iterable#forEach

Google 发布了有关支持哪些功能的表格。他们的文档中是否提及Iterable.forEach()任何minSdkVersion 是否受支持?

foreach android java-8

6
推荐指数
1
解决办法
54
查看次数

Android:通过使用主题,我每个属性只有一次拍摄吗?Android中没有类似CSS的东西吗?

在这里他们写道:

要将样式定义应用为主题,必须将样式应用于Android清单中的活动或应用程序.执行此操作时,活动或应用程序中的每个视图都将应用它支持的每个属性.例如,如果将前面示例中的CodeFont样式应用于Activity,则所有支持文本样式属性的View元素都将应用它们.

因此,当我将TextColor设置为Red时,所有带文本的元素都会变为红色吗?CSS样式表中是否有强大的说明符?我只看到styles(style="@style/CodeFont")的概念是切实可行的.

android themes android-layout android-xml android-styles

5
推荐指数
1
解决办法
561
查看次数

调试一个自签名的Android应用程序?(需要它用于facebook集成)

当在eclipse中点击"调试"按钮时,我的应用程序由一个调试密钥表单android签名,它存储在文件"debug.keystore"中.

现在我正在实施Facebook SDK,这迫使我使用已签名的应用程序进行Single SignOn功能.这样我需要生成我的公司密钥库的哈希值并将其存储在我们的Facebook开发者帐户中.

我知道如何通过Eclipse中的向导(通过AndroidManifest.xml)签署应用程序.如何调试这样一个签名的应用程序?

我可以以某种方式更改调试密钥并将我们的公司密钥设置为调试密钥吗?或者我该怎么办?现在我只能通过在设备上签名并安装我的应用程序来获得FB工作.我已经尝试生成调试密钥的哈希没有运气...

debugging android facebook signing

5
推荐指数
1
解决办法
3622
查看次数

在Java对象中替换自己的实例

就我而言,实现者应该能够“更新”一个对象。

//creating an instance (follows the active record pattern)
    SameClass myObject = SameClass.find(123,params); 

//myObject gets replaced by the output of the web api inside, but it feels like an update for the implementator
    myObject.update("ask the web api to paint it black"); 
Run Code Online (Sandbox Code Playgroud)

但是,在类内部,我还没有弄清楚如何立即替换所有属性。这种方法行不通,但是也许还有其他机会可以解决它:

    public void update(String newParams) {
//Can't replace "this" (that call returns an instance of "SameClass")
       this = ConnectionFramework.getForObject(SameClass.class,"some url",newParams); 
    }
Run Code Online (Sandbox Code Playgroud)

实际上,“ ConnectionFramework”是适用于Android的Spring RestTemplate。未简化的版本是:

    public void update(HashMap<String,String> params) {
SameClassResponse response = restTemplate.getForObject(ENDPOINT+"/{id}.json",SameClassResponse.class, params);
    this = response.getSameClass(); …
Run Code Online (Sandbox Code Playgroud)

java instance-variables instance

5
推荐指数
1
解决办法
9236
查看次数

gradle 中的组、模块和工件是什么?

gradle 文档不会花时间解释他们正在处理的实体。这就是为什么我想问这样一个基本问题。

我需要详细了解术语“组”、“模块”和“工件”对于更改此代码的真正含义:

compile('com.thoughtworks.xstream:xstream:1.4.7') {
    exclude group: 'xmlpull', module: 'xmlpull'
}
Run Code Online (Sandbox Code Playgroud)

大约一年前,我使用从Android dalvik 转换中为 xmlpullparser获取的排除语句来修复多个 dex 文件故障。

但是升级到Android Studio 3.0后又出现这个错误!现在它说:Multiple dex files define Lorg/xmlpull/mxp1/MXParser有时...XmlPullParserException.java所以,我想了解我给出的参数exclude必须如何形成。

阅读文档,人们可能会认为组是包名称,而工件是类

//excluding a particular transitive dependency:
exclude module: 'cglib' //by artifact name
exclude group: 'org.jmock' //by group
exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
Run Code Online (Sandbox Code Playgroud)

另一个中文页面翻译)使用了那些排除项

 compile ( 'com.thoughtworks.xstream: xstream: 1.4.7' ) {
       exclude group : …
Run Code Online (Sandbox Code Playgroud)

android xstream gradle xmlpullparser android-gradle-plugin

5
推荐指数
1
解决办法
3287
查看次数

Proguard (R8) 否定操作员不保留某些包以外的任何东西

proguard 中的否定符(感叹号)应该允许我保留 apache 库之外的其他内容:

-keep class !org.apache.**
Run Code Online (Sandbox Code Playgroud)

根据这些答案。这就是要走的路:

但是,它混淆了我的 APK 中的所有类。

这是我的 build.gradle 的一部分(我有 Android Studio 3.5.3)

compileSdkVersion 29
buildToolsVersion "29.0.2"
//...
buildTypes {

    release {

        minifyEnabled true
        proguardFiles /*getDefaultProguardFile('proguard-android.txt'),*/  'proguard-rules.pro'

        // Enables resource shrinking, which is performed by the
        // Android Gradle plugin.
        shrinkResources false
    }
}

dependencies {
    //Utility libs
    implementation 'org.apache.commons:commons-collections4:4.1'
    implementation 'org.apache.commons:commons-lang3:3.4'
    implementation group: 'commons-io', name: 'commons-io', version: '2.5'
}
Run Code Online (Sandbox Code Playgroud)

添加 …

android proguard apk android-r8

5
推荐指数
2
解决办法
1556
查看次数

在 Jelly Bean 等旧设备上获取 Samsung KNOX api 版本

我有一台装有 Android 4.3 Jelly Bean 的三星 Galaxy Camera 2(它的年龄与三星 Galaxy S3 差不多)。

他们的文档告诉我,在 Jelly Bean 上我可以找到 KNOX Api 级别 5 - 10。

那么,如何找出我实际拥有的 KNOX Api 级别?

  • 我在设置的系统信息页面中找不到它
  • 我还没有找到以编程方式检索它的方法

android version samsung-knox

5
推荐指数
1
解决办法
396
查看次数