小编Ste*_*ley的帖子

如何获取视图的绝对坐标

我正在尝试获取视图左上角的绝对屏幕像素坐标.但是,我可以找到的所有方法,例如getLeft()并且getRight()不起作用,因为它们似乎都相对于视图的父级,因此给了我0.这样做的正确方法是什么?

如果它有帮助,这是为了"让图片重新整理"游戏.我希望用户能够绘制一个框来选择多个部分.我的假设是,做到这一点的最简单方法是getRawX(),并getRawY()MotionEvent再兑布局保持件的左上角比较这些值.知道了件的大小,我就可以确定已经选择了多少件.我知道我可以使用getX()getY()MotionEvent,而是作为一个返回相对位置,使得确定哪个被选择件更困难.(我知道,这并非不可能,但似乎不必要地复杂化).

编辑:这是我用来尝试获取保持容器大小的代码,根据其中一个问题.TableLayout是包含所有拼图的表.

TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
Log.d(LOG_TAG, "Values " + tableLayout.getTop() + tableLayout.getLeft());
Run Code Online (Sandbox Code Playgroud)

编辑2:这是我尝试过的代码,遵循更多建议的答案.

public int[] tableLayoutCorners = new int[2];
(...)

TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
tableLayout.requestLayout();
Rect corners = new Rect();
tableLayout.getLocalVisibleRect(corners);
Log.d(LOG_TAG, "Top left " + corners.top + ", " + corners.left + ", " + corners.right
            + ", " + corners.bottom);

cells[4].getLocationOnScreen(tableLayoutCorners);
Log.d(LOG_TAG, "Values " …
Run Code Online (Sandbox Code Playgroud)

android android-tablelayout

376
推荐指数
9
解决办法
27万
查看次数

从你自己打开另一个应用程序(意图)

我知道如何更新我自己的程序,我知道如何使用预定义的Uri打开程序(例如短信或电子邮件)

我需要知道如何创建一个Intent来打开MyTracks或任何其他我不知道他们听什么意图的应用程序.

我从DDMS那里获得了这些信息,但我没有成功将其转化为我可以使用的Intent.这是在手动打开MyTracks时获取的.

谢谢你的帮助

05-06 11:22:24.945: INFO/ActivityManager(76): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks bnds=[243,338][317,417] }
05-06 11:22:25.005: INFO/ActivityManager(76): Start proc com.google.android.maps.mytracks for activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: pid=1176 uid=10063 gids={3003, 1015}
05-06 11:22:26.995: INFO/ActivityManager(76): Displayed activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: 1996 ms (total 1996 ms)
Run Code Online (Sandbox Code Playgroud)

android android-intent

134
推荐指数
8
解决办法
23万
查看次数

ContainerView具有多个嵌入segues

有没有办法让一个ContainerView具有多个嵌入段?目的是让ContainerView根据按下的按钮保持几个不同的ViewControllers; 一次只能看到一个.我想使用嵌入segues,这样在Interface Builder中,故事板会自动显示与ContainerView相同的大小.

我意识到我可以手动调整InterfaceBuilder中的其他ViewControllers,但我想要嵌入segue提供的自动调整大小.如果可以采用另一种方式,那也没关系.没有在viewDidLoad上加载视图很好 - 如前所述,显示的ViewController可以根据按下的按钮进行更改.

objective-c ios segue ios6

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

从小部件启动活动

我正在尝试做一些真正应该很容易的事情,但它让我发疯.我正在尝试在按下主屏幕窗口小部件时启动活动,例如窗口小部件的配置活动.我想我已经在Android开发者网站上一字不差地跟着教程,甚至还有一些非官方的教程,但我必须遗漏一些重要的东西,因为它不起作用.

这是代码:

public class VolumeChangerWidget extends AppWidgetProvider {

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
    final int N = appWidgetIds.length;

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

        Log.d("Steve", "Running for appWidgetId " + appWidgetId);
        Toast.makeText(context, "Hello from onUpdate", Toast.LENGTH_SHORT);
        Log.d("Steve", "After the toast line");

        Intent intent = new Intent(context, WidgetTest.class);

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

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

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

将小部件添加到主屏幕时,Logcat会显示两条调试行,但不会显示Toast.(任何想法为什么不呢?)然而,更令人烦恼的是,当我点击与PendingIntent相关联的按钮时,根本没有任何事情发生.我知道"WidgetTest"活动可以运行,因为如果我在主活动中设置了一个Intent,它就会启动.

如果重要,这里是Android Manifest文件:

<manifest …
Run Code Online (Sandbox Code Playgroud)

android android-widget

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

AlertDialogs中的按钮样式

有谁知道如何覆盖AlertDialog按钮的默认样式?我已经浏览了Android源代码中的主题样式,并尝试了不同的东西,但我还没有找到一种有效的方法.

我下面的内容适用于更改背景,但对按钮没​​有任何作用.通过清单myTheme应用于整体<application>.(为清楚起见,删除了其他一些项目,但它们仅与标题栏相关.)

<style name="myTheme" parent="android:Theme">
    <item name="android:buttonStyle">@style/customButtonStyle</item>
    <item name="android:alertDialogStyle">@style/dialogAlertTheme</item>
</style>

<style name="dialogAlertTheme" parent="@android:style/Theme.Dialog.Alert">
    <item name="android:fullDark">@drawable/dialog_loading_background</item>
    <item name="android:topDark">@drawable/dialog_alert_top</item>
    <item name="android:centerDark">@drawable/dialog_alert_center</item>
    <item name="android:bottomDark">@drawable/dialog_alert_bottom</item>
    <!-- this last line makes no difference to the buttons -->
    <item name="android:buttonStyle">@style/customButtonStyle</item> 
</style>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

android android-alertdialog

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

密钥库和别名 - 多个别名有用吗?

使用Eclipse导出已签名的Android应用程序时,是否有使用多个别名的目的?

根据有关签名官方指南,建议您使用相同的证书对所有应用程序进行签名,以允许您的应用程序共享数据,代码并以模块化方式进行更新.

假设"别名","密钥"和"证书"在这种情况下基本上是可以互换的,是否有人想要为所有应用程序使用不同的别名?我能想到的唯一原因是它为您的应用程序增加了更多的安全性,因为受损的密钥/密码不会危及所有内容.还有其他原因吗?

此外,生成的密钥是否依赖于别名的名称?换句话说,如果更改别名但不更改密码,生成的证书是否会有所不同?

eclipse android keystore google-play

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

Firebase分析事件不显示价值

我有一个游戏,我希望每次用户设置新的高分时发送事件,我检查当前分数是否>之前,如果是,我将新的高分发送到firebase.码:

Bundle bundle = new Bundle();
bundle.putLong(FirebaseAnalytics.Param.LEVEL, extras.getInt("score"));
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.LEVEL_UP, bundle);
Run Code Online (Sandbox Code Playgroud)

这就是它在firebase控制台中的样子:图像链接

您可以看到事件按其值分组的方式.

问题是我有4种不同的模式,我想为每个模式捕获高分,所以这就是我尝试的方式:

Bundle bundle = new Bundle();
bundle.putLong(FirebaseAnalytics.Param.LEVEL, extras.getInt("score")); 
mFirebaseAnalytics.logEvent("mode4level", bundle);
Run Code Online (Sandbox Code Playgroud)

这就是我在firebase控制台中获得的:图像链接

按价值分组的活动缺失,我只有活动地点,活动人口统计,每个会话的活动.

我该如何解决这个问题,缺少分析的关键部分?谢谢.

events android analytics firebase firebase-analytics

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

Android中的自定义按钮:当我从xml读取背景时如何获取边框/边框/边框?

在xml中使用Android Shapes我已经定义了一个渐变,我将其用作按钮的背景.

这一切都很好,但按钮周围没有边缘.我希望它看起来类似于普通的Android按钮,但我需要更多的灵活性来控制颜色和外观.

形状定义如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#FFFFFF" 
        android:endColor="#00FF00"
        android:angle="270" />
    <corners android:radius="3dp" />
    <stroke android:width="5px" color="#000000" />
</shape>
Run Code Online (Sandbox Code Playgroud)

我希望边框可以在xml中设置.为什么不"中风"修复它?中风似乎没有做任何事情.我检查了Android Developer规范,但在那里找不到答案:http: //developer.android.com/guide/topics/resources/drawable-resource.html

我还查看了Android按钮的所有属性,但正如预期的那样,没有这样的参数,可能因为它内置于普通的Android按钮中.顺便说一句,我也检查过ImageButton属性.

有人可以帮忙吗?我知道可以使用适当的边缘制作图像并使用ImageButton,但实际上应该有一种方法可以通过编程方式修复此问题.

谢谢!安娜

android

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

如何获得过期的Google Play订阅?

有没有办法从Google Play获取用户过期的订阅?我正在制作一个杂志风格的应用程序,我希望用户能够访问在订阅处于活动状态时发布的内容,无论他们当前是否有订阅.例如,如果用户在6月1日购买了一个月的订阅,则在6月底之前取消订阅,从7月开始,他们仍然可以访问6月份发布的任何内容.

使用Google的IabHelper.java示例库,似乎没有办法.继续上面的例子,从7月开始,queryInventory()方法根本不再显示订阅.这阻止我们检索purchaseToken,这反过来阻止我们使用Google Play Developer API.(如此处所述,该Purchases.Subscriptions:get() 方法需要令牌.)

我意识到我们可以在用户进行购买时在本地缓存令牌,但这不适用于多个设备.为了在多台设备上购买产品,我们需要将购买代币存储在服务器上.但是,这将要求用户有办法登录我们的服务器以检索其令牌,这会增加更多的复杂性.

有没有更好的办法?

android in-app-purchase in-app-subscription

10
推荐指数
0
解决办法
732
查看次数

如何将较小的位图复制到较大的位图?

希望这应该是一个简单的问题.我正在尝试将一系列小位图复制到一个较大的位图中,将它们并排排列,没有任何间隙或像素重叠.例如,如果我有3个方形位图,我想将它们复制到一个长而细的矩形中.我知道如何做相反的事情,即从较大的位图创建一个小位图,但不是这样.什么是正确的命令?

(如果有人好奇,我想这样做是为了能够重用我为处理带有单个位图的动画而编写的代码.)

谢谢!

android canvas bitmap

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