小编Jos*_*_GD的帖子

具有禁用UI感觉的Android ImageButton

我有一个禁用的ImageButton(不可点击或设置为禁用).我想给用户一种UI感觉,即在不使用任何其他图像的情况下禁用它.

有没有办法做到这一点?

android image

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

为什么Gradle需要settings.gradle文件?

我将把我的Android项目从Ant转换为Gradle.

我的Eclipse工作区非常简单:

Workspace
     MyApp
     MyApp-AndroidLibrary
Run Code Online (Sandbox Code Playgroud)

当我在MyApp中添加build.gradle文件时,我想引用我的Android库项目:

apply plugin: 'android'

dependencies {
     compile fileTree(dir: 'libs', include: '*.jar')
     compile project(':MyApp-AndroidLibrary')
}
Run Code Online (Sandbox Code Playgroud)

当我运行gradle构建时,出现错误"带路径的项目':在根项目中找不到MyApp-AndroidLibrary",我搜索了这个,发现我需要在工作空间中设置"settings.gradle"文件目录,添加

include ":MyApp"
include ":MyApp-AndroidLibrary"
Run Code Online (Sandbox Code Playgroud)

这对我来说太糟糕了,为什么Gradle需要一个settings.gradle文件,为什么不提取我在依赖项中定义的项目呢?

究竟是什么include意思?如果我在工作区中有anotoher应用程序和其他一些共享库,结构可能如下所示:

Workspace
     App1
     App2
     Library1(Used by App1 & App2)
     Library2(Used only by App1)
     Library3(Used only by App2)
Run Code Online (Sandbox Code Playgroud)

因为只有一个settings.gradle文件,所以我必须将它们全部添加到settings.gradle中.那味道不好.

是的,我可以重新组织结构,使Library2成为App1的子目录,而Library3成为App2的子目录,但是Library1呢?

对此有何评论?

java eclipse android gradle maven

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

意图标志 - 如何启动新活动实例并关闭其他实例

我对意图标志并不熟悉,所以请耐心等待.

我正在做一个应用程序,它在ViewPager中显示数据库中的内容.我还有一个小部件,它不时拉出一个随机行并显示它.现在,当我点击它时,我将进入一个活动,其中显示相同的内容,现在我可以对其采取行动.

一切正常,但是当我有一个已经运行的活动,然后点击小部件时,它似乎创建了一个新实例,因为当我按下后退按钮时,我没有退出应用程序但是被带到之前的实例或其他东西.

有没有办法启动一个活动的新实例,如果有一些以前的实例运行关闭它们,使用标志?

我玩了CLEAR_TOP和那些东西但老实说我不知道​​我在做什么.

谢谢!

//编辑

Intent.FLAG_ACTIVITY_CLEAR_TOP似乎没有做任何事情.Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP似乎将前一个放到顶部而忽略了新的一个或者什么.也许让我改一下,我从启动器图标开始活动,然后我按下主页按钮并单击小部件,它应该调出一个新的实例,其中ViewPager.setCurrentItem设置正确的页面(与小部件相同).如果之前没有运行主要活动,一切都没问题,但如果它正在运行,请完成它.

MyWidgetProvider extends AppWidgetProvider

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    Log.d("MainActivity", "MyWidgetProvider # onUpdate");

    for (int i = 0; i < appWidgetIds.length; i++) {
        int appWidgetId = appWidgetIds[i];

        Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra("from_widget", true);
        //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        views.setOnClickPendingIntent(R.id.widget_container, pendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

}
Run Code Online (Sandbox Code Playgroud)

flags android android-intent

7
推荐指数
1
解决办法
6749
查看次数

Android XML图层列表:如何定位顶层

我有这个XML drawable - tab_background_unselected:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/background_grey" />            
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

创建这个形状:

背景矩形

这个箭头形状xml drawable - tab_selected_arrow:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <rotate
            android:fromDegrees="45"
            android:pivotX="-40%"
            android:pivotY="87%"
            android:toDegrees="45" >
            <shape android:shape="rectangle" >
                <solid android:color="@color/background_dark_green" />
            </shape>
        </rotate>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

创建这个形状:

顶层三角形

我正在使用这个可绘制的XML(而不是PNG文件)来创建一个图层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/tab_background_unselected">
    </item>
    <item android:drawable="@drawable/tab_selected_arrow">
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

但我希望最终图像看起来像这样:

最终形象

我不知道如何将箭头的重力(第二项和顶层)设置为居中|我已尝试使用bitmap标签,但它只接受图像文件.

我需要这是一个XML drawable因为

  1. 我需要它在一个可绘制的选择器内
  2. 我不想让它成为PNG并为每个屏幕分辨率创建不同的文件

xml android layer-list

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

禁用启动器活动后,android重新安装失败

我想从应用列表和最近的应用列表中删除我的应用.所以我尝试使用以下代码禁用我的main/launcher活动:

ComponentName componentToDisable = new ComponentName(context, MainActivity.class);
context.getPackageManager().setComponentEnabledSetting(componentToDisable,
           PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)

这样做了.但是现在我尝试重新安装应用程序并且无法说"活动MainActivity类不存在".如果我卸载应用程序,安装将再次运行.我该如何处理这个问题?非常感谢您的时间和帮助

android components failed-installation

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

动态添加自定义视图到RemoteViews

有人可以帮我这么做吗?我的代码是这样的:

 public CustomClass extends View {

//uses ondraw() to do something

}
Run Code Online (Sandbox Code Playgroud)

为了在主屏幕上显示我的自定义视图,我创建了一个扩展广播接收器的类:

public class customAppWidgetProvider extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
            RemoteViews views = new RemoteViews(context.getPackageName(),
                    R.layout.main);

           //Here I want to create my custom view class object and I want to add this view to linear layout in main.xml

              CustomClass object = new CustomClass(context) ;
              LinearLayout layout = new LinearLayout(context) ;
              layout.setLayoutParameters(new LayoutParameters(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
              layout.addView(object);

            views.addview(R.id.linearlayout, (ViewGroup) layout) ; …
Run Code Online (Sandbox Code Playgroud)

android-widget

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

如何使用无头活动处理静默SEND意图

就像问这个问题的用户一样:Android上的默认浏览器如何发送"SEND"意图?,我希望我的Android应用程序处理静默发送.我实现了提议的解决方案,一个永远不会调用setContentView()的无头活动:

public class IntentMgrAct extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       // setContentView explicitally ommited
       Toast.makeText(getApplicationContext(), "Message sent", Toast.LENGTH_LONG).show();
   }
}
Run Code Online (Sandbox Code Playgroud)

当其他应用程序将意图发送到我的"哑巴"活动时,它会出现在烤面包后面,但我想要的只是吐司.我试图在Toast.makeText之后用finish()隐藏无头活动并完成这个技巧,但是有一个明显的闪烁.如何防止活动出现?

java android

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

方形布局的Appwidget在横向模式下无法正常显示

我已经构建了一个方形布局的appwidget,因此它不符合http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#sizes中建议的标准小部件大小.

我选择了3x2尺寸(android:minWidth ="220dip"android:minHeight ="146dip"),因为它是覆盖小部件布局的最小尺寸.

http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#design中, Google建议:

"所有小部件必须适合六个支持的小部件大小之一的边界框,或者更好,在一对纵向和横向方向大小内,因此当用户切换屏幕方向时,您的小部件看起来很好"

我的小部件在纵向模式下看起来不错 切换到横向模式(在模拟器中)时,剪裁布局.我尝试在提供程序的XML中反转minWidth和minHeight值,然后在横向模式下看起来很完美,但在纵向模式下剪切.将大小设置为3x3可以解决问题,但是小部件会占用大量不必要的空间.

我知道我可以在res/layout和res/layout-land中定义不同的布局,但在这种情况下布局完全没有区别,在两种模式中我都希望窗口小部件看起来是方形的.我需要的是'xml'和'xml-land',AFAIK在Android中不支持.

想法?

android android-widget

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

在Android上的应用程序之间进行通信的首选方式是什么(服务与意图)

Android上的这两种交互方式之间有什么区别:

  1. 在app#1中实现服务并在app#2中使用它
  2. 处理意图并发布意图的答案.

交互应该是异步的.

什么是各自的利弊?

service android ipc aidl

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

从Android上的另一个类调用方法

我创建了两个类,实际上它们都扩展了Activity.我想要做的是从第二堂课调用一个方法.

我想要做的是从第二类调用方法然后在第一类中实现,不幸的是我没有成功.

我需要你的帮助来解决这个问题.谢谢

我的第一堂课:

package com.math4kids;

import android.app.Activity;
import android.os.Bundle;

public class testing002 extends Activity {

private Sounds myotherclass;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.numeracy);

    myotherclass.Randomsoundforrightanswer();

}

}
Run Code Online (Sandbox Code Playgroud)

第二课:

package com.math4kids;

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;

public class Sounds extends Activity {

MediaPlayer cool, good, perfect, sweet, excellent, goodthinking, greatjob,
        notbad, thatstheway, youdidit, yes, again, wrong, sorry,
        sundfornum01, sundfornum02;
public Random random = new Random();

public Sounds(Context context){
    super.getApplicationContext();
} …
Run Code Online (Sandbox Code Playgroud)

java methods android

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