小编Ali*_*lin的帖子

获取没有国家/地区代码的电话号码以进行比较

我可以通过来电或短信来获取电话号码.不幸的是,在SMS的情况下,可能有国家代码.所以,基本上我需要获取没有国家代码的普通电话号码,以便将其与联系人中的现有号码进行比较.

android phone-number mobile-country-code

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

按钮在Android中将背景显示为AnimationDrawable

我已经在Android中制作了一段时间的自定义按钮.事情很简单,只是为按钮状态创建了图像资源,并为它做了一个选择器.一切顺利而美好.现在我遇到了一个新情况.我制作了一个可绘制的动画并将其设置为我按钮的背景.

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
  <item android:drawable="@drawable/frame1" android:duration="600" /> 
  <item android:drawable="@drawable/frame2" android:duration="300" /> 
  <item android:drawable="@drawable/frame3" android:duration="500" /> 
</animation-list> 
Run Code Online (Sandbox Code Playgroud)

如果我将动画设置为按钮的背景,它可以正常工作.如果我尝试制作一个简单的选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
        android:state_pressed="false"
        android:drawable="@drawable/animation" />

    <item
        android:state_pressed="true"
        android:drawable="@drawable/pressed" />
  </selector>      
Run Code Online (Sandbox Code Playgroud)

按钮的正常状态将动画作为背景,按下状态是静态图像,事情不能正常工作.

在我的主要活动中,在onWindowFocus上,我得到按钮背景并开始动画

 @Override
  public void onWindowFocusChanged(boolean hasFocus) {
      super.onWindowFocusChanged(hasFocus);
          btn = (Button)findViewById(R.id.btnAnim);
          btnAnimation = (AnimationDrawable) btnAnim.getBackground();
          btnAnimation.start();
 }
Run Code Online (Sandbox Code Playgroud)

这似乎是问题,因为我的动画将无法从选择器中正确获取,我收到以下错误:

03-14 15:21:16.146: ERROR/AndroidRuntime(440): FATAL EXCEPTION: main
03-14 15:21:16.146: ERROR/AndroidRuntime(440): java.lang.ClassCastException: android.graphics.drawable.StateListDrawable
03-14 15:21:16.146: ERROR/AndroidRuntime(440):     at com.bebenjoy.MainActivity.onWindowFocusChanged(MainActivity.java:53)
03-14 15:21:16.146: ERROR/AndroidRuntime(440):     at ...
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何想法?谢谢.

animation android button

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

在Android中格式化SD卡

事情应该很简单,但在大多数情况下,在Android中,不是.如果用户在我的应用程序中选择该选项,我需要格式化SD卡.如果它已经在操作系统中,请不要问我为什么需要这样做...不实用但是我需要实现它.您可能知道,Settings\Storage\Erase SD Card中有一个选项.我看了一下froyo源代码,它是这样的:

final IMountService service =
         IMountService.Stub.asInterface(ServiceManager.getService("mount"));
        if (service != null) {
            new Thread() {
                public void run() {
                try {
                        service.formatVolume(Environment.getExternalStorageDirectory().toString());
                    } catch (Exception e) {
                        // Intentionally blank - there's nothing we can do here
                    Log.w("MediaFormat", "Unable to invoke IMountService.formatMedia()");
                    }
                }
            }.start();
        } else {
            Log.w("MediaFormat", "Unable to locate IMountService");
        }
Run Code Online (Sandbox Code Playgroud)

它使用android.os.storage.IMountServiceandroid.os.ServiceManager我似乎无法访问它.所以,正如我所看到的那样,我可以递归搜索每个文件并将其删除,但这将"不符合我的口味"......或者我可以从Erase SD卡启动屏幕到用户.

任何帮助都是受欢迎的,因为我被困住了.

format android erase android-sdcard

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

计算触摸点的角度并在Android中旋转它

数学再一次打败了我.这是一项非常简单的任务,但我无法完成任务.

场景:我在SurfaceView上绘制一个圆形图像.用户触摸图像边框上的一个点并开始将其拖动到周围.我需要根据用户的移动旋转圆形图像.我有两个重要的信息,图像中心X,Y坐标和触摸点坐标.

在此输入图像描述

正如您在图像中看到的那样,用户触摸了一个点,根据我的绘制,触摸点角度应该在40左右.我无法正确计算它.

我尝试使用这个公式:

angle = Math.atan2(touchedY - centerY, touchedX - centerX) * 180 / Math.PI 
Run Code Online (Sandbox Code Playgroud)

我无法理解我应该如何计算角度,就像现在一样,它不能正常工作并且值不好.例如,在图像的情况下,角度计算是-50.

感谢您的时间,任何信息都很乐意接受.

LE:其实我认为我犯了一个错误,如下所述.圈子应该是这样的:

在此输入图像描述

math geometry android atan2

8
推荐指数
2
解决办法
9868
查看次数

简单的EditText货币格式化程序

可能重复:
格式化货币输入editText的更好方法?

问题很简单,基本......但我找不到合适的方法来处理它.我有一些带有货币值的字段,我需要同时拥有货币符号和小数值.这就是我所说的:

在此输入图像描述

用户将输入值:1然后.然后是8然后是0.欧元符号我希望它一直可见.

实现这一目标的最佳方法是什么?

android currency

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

Android Jetpack导航如何处理工具栏和BottomNavBar内容

我对导航组件如何适应应用程序行为感到有些困惑。在教程中,您所做的事情并不会太复杂,但是在实际应用中实施时,情况似乎有所不同。

导航之前

在实施导航之前,我必须手动运行片段事务。为了做到这一点,我的片段将实现一个接口onFragmentAction,该接口将a传递bundle给主体,Activity并在基于动作的活动中,用另一个替换当前片段。

需要处理的第二部分是顶部的工具栏和BottomAppBar。例如,BottomAppBar需要FAB在某些片段上进行不同的对齐,或者在其他片段中进行隐藏。同样,顶部ToolBar需要在某些位置上扩展或在其他位置上折叠。为此,我听了FragmentManager.OnBackStackChangedListener并且基于fragment标签相应地getSupportFragmentManager().getBackStackEntryAt(size - 1).getName()更改了布局。

带导航

第一部分似乎很容易做到:传递参数并开始新的片段。但是我不知道导航是否可以处理工具栏管理,或者我需要继续从“活动”中进行管理。

android android-architecture-components android-jetpack android-architecture-navigation

8
推荐指数
3
解决办法
3725
查看次数

禁止出现Android来电活动

现在怎么样

这已在许多问题中讨论过,但两者都没有提供良好的解决方案.事情看起来很简单,因为有一个BroadcastReceiver很容易拦截和阻止一个电话.出现的主要问题是默认的Android来电屏幕.你知道,有一个用于接听/结束通话的滑块.因为我有一些阻止呼叫的规则,所以在呼叫挂起之前会有一点延迟.在所有这些时间,来电呼叫屏幕都处于活动状态.

我多么想要的东西

我希望用户不会通过此调用阻止通知,因为在我的应用程序中我已经完成了所有块的清除日志.因此,最重要的是:如何阻止来电屏幕启动?

android phone-call android-activity

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

Android按钮的背景为阴影形状

我从形状中制作了一个按钮背景,看起来非常适合我的目的.唯一需要的是为它投下一点阴影.这是代码:

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

    <item android:state_pressed="true">
        <shape>
            <solid android:color="#343434" />

            <stroke android:width="1dp" android:color="#171717" />

            <corners android:radius="3dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" />

            <stroke android:width="1dp" android:color="#BABABA" />

            <corners android:radius="4dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
   </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

这就是我想要实现的目标

在此输入图像描述

我该如何掉落阴影?我的猜测是我需要制作另一个形状但是带有黑色/灰色背景并设置某种形式的左边缘填充以使其看起来像阴影.但我不知道该怎么做......而且文档对我没有多大帮助.

稍后编辑:我想在xml文件中添加阴影而不是代码.谢谢.

android shape button android-layout

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

片段或父活动中的Asynctask?

我有一个场景,我不知道要走哪条路.

脚本

该应用程序有一个Home活动,显示各种片段.片段中的数据可以来自Web或本地数据库,并使用asynctask进行检索.

从我看到的,我有两个选择:

  1. 将Asynctask放在父活动中,然后用于fragment.newInstance(parameters)将结果传递给片段.但是,如果在我的asynctask中我需要更新片段的进度或一些信息,每次我都必须使用新的参数集调用newInstance.

  2. 添加片段并将asynctask放入其中,这样当需要进度时,我可以更新片段的视图,因为我可以访问它们+当asynctask完成时,我可以用信息填充列表.

什么是正确的方法?

LE:实际上对于第1点来更新片段我可以findFragmentById在父活动中找到它之后调用片段的公共方法

android android-asynctask android-fragments

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

使用android intent在特定时间打开YouTube视频

我正在从我的应用程序打开YouTube视频,类似于这个答案:https://stackoverflow.com/a/12439378/379865

我想知道是否可以在指定的时间打开视频,所以例如视频在开始时从30秒开始运行,而不是从头开始.

android android-intent

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