小编EGH*_*HDK的帖子

在Android中使用矢量图标

为此序言:

我已经考虑过将它放在graphicdesgin.stackexchange.com上,但我得出结论,我的Android特定问题可能不是最好的地方.这就是我选择stackoverflow的原因,因为它似乎更像是Android imageViews然后是图形本身的问题.谢谢.



我需要在Android应用程序中使用一些基本图标.我有Illustrator和Photoshop(在任何一个都不是很好,但我可以顺利).我偶然发现了http://www.androidicons.com/,我看到很有可能只用25美元就节省了几个小时的时间.为了了解在我的应用程序中使用它们需要做些什么,我下载了免费的"BONUS ICONS 01"包.

在此输入图像描述

我决定尝试使用时钟图标,看看它在我的应用程序中是如何工作的.我在Illustrator中将图标放大到大约800px,然后将其复制并粘贴到Photoshop中.我把它保存为.png,然后我创建了一个示例应用程序来测试它.

该图像是只投入xhdpi文件夹,因为我可能会使用此图标的东西比操作栏较大,但不是东西,会占用整个屏幕.我的想法是,如果你要为所有单独的dpi级别创建操作栏图标,那么你必须确切地知道你将要制作它们的大小(以像素为单位),因此它们看起来都非常好(例如,如果您从谷歌下载操作栏图标,他们会以几种尺寸向您提供,而不仅仅是一种尺寸.但是,如果他们将被用于比这更大的东西呢?我怎么知道要制作它们的尺寸.

要真实地表达我对如何无法理解这个主题的沮丧.这是我的应用程序的代码,以及它最终看起来像我的Galaxy Nexus的结果.较大的图标很好,而较小的图标看起来不那么清晰.我该如何解决?在Illustrator中制作图像并进入Photoshop并确保它们在任何尺寸下都能使用它们的正确方法是什么?

此致

Android开发人员只是不懂图形.

在此输入图像描述

正如你所看到的那样,当图像很大时,它看起来看起来很不错,但是当图像较小时使用它会导致IMO出现一些问题.有办法解决这个问题吗?我太挑剔了吗?即使我将它调整为更小,并将其放入mdpi,我的布局是否会选择它?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center|center_horizontal" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/anti_huge"
                android:layout_weight="1" />

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/anti_huge"
                android:layout_weight="1" />
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/anti_huge"
                android:layout_weight="1" />
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/anti_huge"
                android:layout_weight="1" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center|center_horizontal" >

            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/anti_huge" />

        </LinearLayout> …
Run Code Online (Sandbox Code Playgroud)

xml android vector-graphics android-imageview android-actionbar

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

以编程方式模拟 Android 按钮点击

条路我见过

View.performClick();
Run Code Online (Sandbox Code Playgroud)

但它不显示按钮的实际按下情况。这个方法我也尝试过

btn.setPressed(true);
btn.invalidate();
Run Code Online (Sandbox Code Playgroud)

但是,它只显示按钮被按下。我已将范围缩小到这段代码,按下然后松开,但不单击。我错过了什么吗?我怎样才能像用户点击一样完成一次点击(monkeyrunner 目前还不是一个选项)

btn = (Button) findViewById(R.id.btn_box);
    Handler handler = new Handler();
    Runnable r = new Runnable() {
        public void run() {
            btn.setPressed(true);
            btn.invalidate();
            Handler handler1 = new Handler();
            Runnable r1 = new Runnable() {
                public void run() {
                    btn.setPressed(false);
                    btn.invalidate();

                }
            };
            handler1.postDelayed(r1, 1000);

        }
    };
    handler.postDelayed(r, 1000);
Run Code Online (Sandbox Code Playgroud)

java android

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

iOS等于Android布局权重是多少?

来自Android开发,我试图模仿过去的应用程序中但现在在iPhone和iPad上所做的某些布局。我在Android中经常使用的是布局权重。我已经进行了大量的搜索,阅读书籍,博客,并且我认为在iOS 6中可以实现类似的功能,但是我却找不到任何东西。我也曾尝试观看过大量有关iOS自动布局的教程,但是我确实没有找到能完成任务的任何东西。这让我发疯。那么...是否有一个iOS相当于Android布局权重?

android ios

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

使用分隔线在 Android xml 中添加无边框按钮

我正在尝试遵循 Android 团队从本文档中制定的指南:

https://docs.google.com/file/d/0Bz3qX4EBhUvwZWlHekI3Y0wxSUk/edit

根据文档,我应该使用这些框架资源。 在此处输入图片说明

这是我的代码,但没有显示任何边框。有任何想法吗?

<LinearLayout
            android:id="@+id/buttonLayout"
            style="?android:buttonBarButtonStyle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:divider="?android:dividerVertical"
            android:orientation="horizontal"
            android:showDividers="middle" >

            <Button
                android:id="@+id/button1"
                style="?android:buttonBarButtonStyle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Test" />

            <Button
                android:id="@+id/button2"
                style="?android:buttonBarButtonStyle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Test" />
        </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

注意:我知道有一个类似/确切的问题,但我的资源似乎更新了,但 Google 团队提供的解决方案不起作用。

android android-layout android-xml

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

尝试将本地android库模块发布到Artifactory

我在项目中创建了一个新的Android库模块作为测试库.它是一个简单的模块,其中一个类具有一个返回字符串的静态方法.我有Artifactory服务器在本地运行,并希望将我的Android lib /模块推送到它.我从Artifactory Web界面生成了Gradle脚本和gradle属性.我的testLib模块中的build.gradle现在看起来像这样:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    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:22.2.1'

}

/////

buildscript {
    repositories {
        maven {
            url 'http://localhost:8081/artifactory/plugins-release'
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }

    }
    dependencies {
        //Check for the latest version here: http://plugins.gradle.org/plugin/com.jfrog.artifactory
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
    }
}

allprojects …
Run Code Online (Sandbox Code Playgroud)

android artifactory gradle

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

运行gradle -v会返回"JAVA_HOME设置为无效目录",即使我有一个有效的JAVA_HOME

我正在尝试安装并使用gradle 2.7

我正确安装了java:

java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我正确设置了JAVA_HOME:

echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

当我运行gradle -v:

ERROR: JAVA_HOME is set to an invalid directory: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
Run Code Online (Sandbox Code Playgroud)

我尝试使用此处给出的解决方案Gradle无法识别我设置的JAVA_HOME,这里Gradle发现错误的JAVA_HOME,即使它已正确设置

但是我的gradle文件中不存在该行 /usr/local/gradle/gradle-2.7/bin

有没有人有任何其他建议?

编辑:cat~/.bash_profile

export JAVA_HOME=$(/usr/libexec/java_home)
export JDK_HOME=$(/usr/libexec/java_home)
export PATH=/Users/eghdk/Dev/Android/SDK/platform-tools:/Users/eghdk/Dev/Android/SDK/tools:$PATH
export ANDROID_HOME=/Users/eghdk/Dev/Android/SDK
# Adding Gradle to system path
export GRADLE_HOME=/usr/local/gradle/gradle-2.7
PATH=$GRADLE_HOME/bin:$PATH
export …
Run Code Online (Sandbox Code Playgroud)

java android gradle

5
推荐指数
0
解决办法
2165
查看次数

在Android中以PKCS#1格式在Android中生成RSA密钥

我正在尝试以Android中的PKCS#1的形式生成RSA公钥.

这里几乎完全重复了这个问题:用Java生成PKCS#1格式的RSA密钥

但作者从未回答过.我经历了答案,但我找不到有用的东西.我得出结论(除非别人有不同的答案),必须使用Bouncy Castle来完成.我与充气城堡唯一的问题实际上是在Android中使用它.我"似乎"正确地导入了jar(我说"似乎"因为我之前从未这样做过,但它是一个相当轻松的过程而且我在Eclipse中没有错误)但是,然后我在log cat中得到一个错误.

03-25 22:25:58.780: E/AndroidRuntime(9171): java.lang.NoClassDefFoundError: org.bouncycastle.jce.provider.BouncyCastleProvider
Run Code Online (Sandbox Code Playgroud)

java android rsa bouncycastle logcat

4
推荐指数
1
解决办法
2725
查看次数

向Theme.Black.NoTitleBar Android添加操作栏

我正在尝试以编程方式添加操作栏,如开发文档中所示,但我遇到了错误.我的minSdk设置为11,我的应用程序有一个布局和一个活动,活动中唯一的代码是:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inbox);
    ActionBar actionBar = getActionBar();
    actionBar.show();

}
Run Code Online (Sandbox Code Playgroud)

如果我取出最后两行,那么我的应用就会运行.我知道holo主题自动包含动作栏,但我不喜欢这些editText视图.关于为什么会发生这种情况的任何想法.我是否应该以HoloTheme不同的方式使用和主题化视图?

再一次,我没有在eclipse中得到任何错误.我的程序崩溃了,我可以从logcat解密为空指针异常.

android android-layout android-theme android-actionbar

4
推荐指数
3
解决办法
3万
查看次数

在Java中随机化

我有4个字符串代表人,4个字符串代表名字.

我正在尝试将它们随机化,以便每次启动应用程序时,我的四个人都会有不同的名称,但在运行时没有人可以使用相同的名称.

例:

String person_one;
String person_two;
String person_three;
String person_four;

String name_one = "Bob";
String name_two = "Jane";
String name_three = "Tim";
String name_four = "Sara";
Run Code Online (Sandbox Code Playgroud)

希望这有一定道理.

java random

4
推荐指数
1
解决办法
198
查看次数

在git中有"当前分支"的字符吗?

我需要不断重新输入我当前的分支名称.

例子

使用远程更改来更新当前分支

git pull origin mySuperLongComplicatedBranchName
Run Code Online (Sandbox Code Playgroud)

将我当前的分支推送到远程

git push origin mySuperLongComplicatedBranchName
Run Code Online (Sandbox Code Playgroud)

我想简化这个简单:

git pull origin *
Run Code Online (Sandbox Code Playgroud)

或类似的东西.除非这样的事情已经存在.我已经习惯了git,但我只是希望我错过了一些简单的东西.

编辑:

添加额外信息以响应一条评论:

git show-ref --head

eaadd6401c4e179c105ac3565fe9bf53e2882f83 HEAD 
eaadd6401c4e179c105ac3565fe9bf53e2882f83 refs/heads/myReallyLongBranchName
d6af452b1ad0a309a55061f9eeb6ab7ae83b6aef refs/remotes/origin/HEAD
eaadd6401c4e179c105ac3565fe9bf53e2882f83 refs/remotes/origin/myReallyLongBranchName`
Run Code Online (Sandbox Code Playgroud)

所以它看起来像我的遥控器reallyLongBranch看起来与当前头部相同.哦,我知道.生病

git fetch

然后我跑了

git show-ref - 再次

bc1b96345913e911d03eb62763f8795cc20ecd8f refs/remotes/origin/myReallyLongBranchName
Run Code Online (Sandbox Code Playgroud)

哦,太好了.现在我必须能做到git pull origin HEAD.

我运行命令.我得到了一个Already up to date.

然后我跑:

git pull origin mySuperLongComplicatedBranchName
Run Code Online (Sandbox Code Playgroud)

我把改变拉了下来.脸掌.

好像它不起作用.Git知道我当前工作的分支名称是什么......我希望它只有一个符号.

git

4
推荐指数
1
解决办法
314
查看次数