小编Per*_*man的帖子

onInterceptTouchEvent,onTouchEvent仅查看ACTION_DOWN

我有一个顶级ViewGroup,我称它为SliderView,我想在其中检测滑动。这通常可以正常工作,但是一个奇怪的失败仍然存在。

SliderView的本质是重写onInterceptTouchEvent,并且在用户实际滑动后,返回“ true”以防止其他视图占用MotionEvent。这是一段代码:

public class SliderView extends ViewGroup
{
  enum MoveState { MS_NONE, MS_HSCROLL, MS_VSCROLL };
  private MoveState moveState = MoveState.MS_NONE;

  ... other code ...

  public boolean onInterceptTouchEvent(MotionEvent e)
  {
    final int action = e.getAction();
    switch (action & MotionEvent.ACTION_MASK)
    {
      case MotionEvent.ACTION_DOWN:
        moveState = MoveState.MS_NONE;
        break;

      case MotionEvent.ACTION_MOVE:
        if (moveState == MoveState.MS_NONE)
        {
          if (motion is horizontal)
          {
            moveState = MoveState.MS_VSCROLL;
            return true;
          }
          else
            moveState = MoveState.MS_VSCROLL; // let child window handl MotionEvent
        }
        else if (moveState == MoveState.MS_HSCROLL) …
Run Code Online (Sandbox Code Playgroud)

android scrollview touch-event android-linearlayout motionevent

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

CalendarContract.EventsColumns.CUSTOM_APP_URI的作用是什么?

标题说明了一切:CalendarContract.EventsColumns.CUSTOM_APP_URI的作用是什么?

我问是因为我正在寻找一个地方,我的应用程序可以将一些特定于应用程序的数据填充到“事件”表中。也许这是一个徒劳的问题,因为当然,我需要确保其他一些应用程序不会浪费我的数据。

也许更好的问题是:如何在日历事件表中存储特定于应用程序的数据?

android calendar

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

onInterceptTouchEvent永远不会收到action_move

我有一个自定义ViewGroup覆盖onInterceptTouchEvent().它接收ACTION_DOWN但从未收到ACTION_MOVE.我的理解是,除非它返回"true",否则它应该接收所有MotionEvent.

ViewGroup包含两个视图,一个ImageView和一个GridLayout.

我的拦截代码是:

  @Override
  public boolean onInterceptTouchEvent(MotionEvent ev)
  {
    final int action = ev.getAction();
    switch (action & MotionEvent.ACTION_MASK)
    {
      case MotionEvent.ACTION_DOWN:
        logD ("DDV Intercept DOWN");
        break;
      case MotionEvent.ACTION_POINTER_DOWN:
        logD ("DDV Intercept P DOWN"); // logD: shell around Log.d()
        break;
      case MotionEvent.ACTION_MOVE:
        logD ("DDV Intercept MOVE");
        break;
      case MotionEvent.ACTION_UP:
        logD ("DDV Intercept UP");
        break;
      case MotionEvent.ACTION_POINTER_UP:
        logD ("DDV Intercept P UP " + ev.getActionIndex());
        break;
      case MotionEvent.ACTION_CANCEL: 
        logD ("DDV Intercept CANCEL");
        break;
      default:
        logD ("DDV Intercept " + (action & MotionEvent.ACTION_MASK)); …
Run Code Online (Sandbox Code Playgroud)

android motionevent

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

mailchimp:如何为特定列表成员设置合并var值

我应该使用mailchimp中的哪个API来为特定列表成员设置merge var值?

如果要添加新的列表成员,则可以使用列表/订阅为该新成员设置合并var值。但是,如果列表成员已经存在,我看不到API来更改值。

API列表/ merge-var-set设置所有列表成员的值。并且list / merge-var-update设置merge var的属性。

设置特定值的API是什么?

var mailchimp

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

需要来自xml属性自定义小部件的图像ID

我有一个自定义控件(现在很简单)就像一个按钮.它需要显示未按下和按下的图像.它在活动中出现多次,并且具有不同的图像对,具体取决于它的使用位置.想想工具栏图标 - 与此类似.

这是我的布局的摘录:

<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:MyApp="http://schemas.android.com/apk/res/com.example.mockup"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" >

  <TableRow>
    <com.example.mockup.ImageGestureButton
      android:id="@+id/parent_arrow"
      android:src="@drawable/parent_arrow"
      MyApp:srcPressed="@drawable/parent_arrow_pressed"
      ... />
     ...
  </TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)

attrs.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="ImageGestureButton"> 
        <attr name="srcPressed" format="reference" /> 
    </declare-styleable> 
</resources> 
Run Code Online (Sandbox Code Playgroud)

并且,在R.java中,人们发现:

public static final class drawable {
    public static final int parent_arrow=0x7f020003;
    public static final int parent_arrow_pressed=0x7f020004;
    ...
}
Run Code Online (Sandbox Code Playgroud)

在窗口小部件实例化期间,我想确定活动xml中声明的id.我怎么做?我试过这个(我使用工作代码更新了我原来的帖子;所以,以下工作.)

public class ImageGestureButton extends ImageView
   implements View.OnTouchListener
{
  private Drawable unpressedImage;
  private Drawable pressedImage;

  public ImageGestureButton (Context context, AttributeSet attrs)
  {
    super(context, attrs);
    setOnTouchListener (this);

    unpressedImage = …
Run Code Online (Sandbox Code Playgroud)

android custom-widgets android-drawable android-custom-attributes

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

具有条件电话权限的应用程序不会下载到平板电脑

我的应用程序有条件地支持电话 - 例如拨打电话,发送文本 - 但它被Android商店阻止下载到我的Nexus 7(可能是其他非电话设备).

我已经广泛搜索了论坛,据一些人说,我应该在我的清单权限中加上"required = false".那显然是不够的.

这是我在清单中有关权限的内容:

<uses-feature android:name="android.permission.CALL_PHONE" android:required="false" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" /> <!-- needed for 4.0 only -->
<uses-feature android:name="android.permission.READ_PHONE_STATE" android:required="false" /> 
<uses-feature android:name="android.permission.READ_SMS" android:required="false" /> 
<uses-feature android:name="android.permission.SEND_SMS" android:required="false" /> 
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.permission.WRITE_SMS" android:required="false" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用权限而不是使用功能.没有不同.

我该如何解决这个问题?

谢谢.

permissions android google-play

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

Android Studio编辑器:如何禁用导入建议的蓝色弹出窗口

显然,最新升级到Android Studio(2016年10月18日建成的2.2.2),它现在在编辑器中显示蓝色弹出提示,如果行中有语法或其他错误,则将鼠标悬停在光标所在的行上.在下面的剪辑中,光标位于克拉下方.

在此输入图像描述

我该如何禁用这些?他们正在阻止我正在尝试阅读的代码!

几秒后它会消失,但每次我移动光标时它们都会重新出现.可怕的很烦人.

旧版本生成了一个黄色提示弹出窗口,但仅当您将鼠标悬停在该行上时出现错误.(这个版本仍然有这种行为.)

editor android-studio

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

如何防止在EditText中删除跨度

有没有一种方法可以防止用户删除或修改EditText中的spannable?更具体地说,我有一个ImageSpan作为EditText的第一个字符。我想确保用户不能删除该ImageSpan。

我意识到我可以使用TextWatcher并在用户删除ImageSpan时将其替换。这很丑陋,我希望有一种方法可以防止删除。

这是我设置文本值的代码片段:

Bitmap bitmap = <bitmap from elsewhere>;
String text = <text to display after ImageSpan, from elsewhere>;

SpannableString ss = new SpannableString (" " + text);
ImageSpan image = new ImageSpan (getContext(), bitmap, ImageSpan.ALIGN_BOTTOM);
ss.setSpan (image, 0, 1, 0);

setText (ss);
Run Code Online (Sandbox Code Playgroud)

android spannable

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

更新联系人display_name

如何更新联系人的显示名称?下面的代码中的操作完成而没有抛出任何东西并且似乎工作 - 也就是说,当我重新查询ContactsContract.Contact表时,一行返回并更改了名称.但是,当我尝试在平板电脑上运行股票"人"应用程序时,它崩溃了.说实话,我做错了什么.

这是代码.在早期,它从聚合联系人中获取一个id,如下所示,其中key是lookup_key:

  String[] projection = new String[] {
    Contacts._ID, // 0
    Contacts.DISPLAY_NAME, // 1
  };

  Uri uri = Uri.parse (Contacts.CONTENT_LOOKUP_URI + "/" + key);
  ContentResolver cr = getContentResolver();
  Cursor cursor = cr.query (uri, projection, null, null, null);
  if (!cursor.moveToNext()) // move to first (and only) row.
    throw new IllegalStateException ("contact no longer exists for key");
  origId = cursor.getLong(0);
  cursor.close();
Run Code Online (Sandbox Code Playgroud)

然后,在用户完成编辑后,我调用此代码块来更新display_name:

  ArrayList<ContentProviderOperation> opers = new ArrayList<ContentProviderOperation>();
  ContentProviderOperation.Builder builder = null;

  String[] args = { Long.toString (origId) }; …
Run Code Online (Sandbox Code Playgroud)

android updates contacts

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

skiasharp xamarin 形式:缩放位图上的抗锯齿效果很差

我正在 Xamarin Forms 中使用 SkiaSharp 绘制位图。抗锯齿功能很差,我想知道如何改进它。

源位图具有抗锯齿功能,如所附图像的左侧所示。右半部分显示了 Android 设备上的屏幕截图的一部分。

源和显示的位图

在左侧,请注意锯齿是规则的 - 一点深色羽化向上,一点浅色羽化向下,全部均匀。在右侧部分,我们仍然看到羽化,但它在双宽像素和单宽像素之间交替。

绘制位图时

canvas.DrawBitmap(bmpSrc, rectSrcRight, rectDest, paint);
Run Code Online (Sandbox Code Playgroud)

我尝试将绘画 IsAntialiasing() 设置为 true 和 false。无显着差异。

在此示例中,源图像的高度为 61 像素,Android 图像的高度为 102。

我是不是期待太多了?

antialiasing xamarin.forms skiasharp

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

for Calendars.CONTENT_URI如何检测日历是否为只读?

节日和生日日历的事件显然无法修改.一般来说,如何判断日历的事件是否为只读?我猜我可以查看CALENDAR_ACCESS_LEVEL列.任何人都知道,有什么价值可以检查?

android calendar

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