我有一个禁用的ImageButton(不可点击或设置为禁用).我想给用户一种UI感觉,即在不使用任何其他图像的情况下禁用它.
有没有办法做到这一点?
我将把我的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呢?
对此有何评论?
我对意图标志并不熟悉,所以请耐心等待.
我正在做一个应用程序,它在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) 我有这个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因为
我想从应用列表和最近的应用列表中删除我的应用.所以我尝试使用以下代码禁用我的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类不存在".如果我卸载应用程序,安装将再次运行.我该如何处理这个问题?非常感谢您的时间和帮助
有人可以帮我这么做吗?我的代码是这样的:
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上的默认浏览器如何发送"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()隐藏无头活动并完成这个技巧,但是有一个明显的闪烁.如何防止活动出现?
我已经构建了一个方形布局的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上的这两种交互方式之间有什么区别:
交互应该是异步的.
什么是各自的利弊?
我创建了两个类,实际上它们都扩展了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)