在开发选项中创建类似于“显示触摸”选项的内容

Posted

技术标签:

【中文标题】在开发选项中创建类似于“显示触摸”选项的内容【英文标题】:Creating something similar to 'Show Touches' option in Dev Options 【发布时间】:2014-06-26 12:08:39 【问题描述】:

我正在尝试为我的应用程序构建一些东西,它与较新的 android 版本的开发设置中的“显示触摸”选项基本上完全相同。

当用户在应用中触摸屏幕时,其手指正下方应出现一个小圆圈,并在屏幕周围跟随它。

我的圆圈出现并跟随手指。我遇到的问题是我的圈子是一个视图,当我尝试在应用程序中放置另一个视图(在我的情况下为 GridView)时,它会覆盖我的圈子视图。所以你可以与 GridView 进行交互,但我认为圆形视图隐藏在后面,或者被覆盖了。

在我的情况下,我需要顶部的触摸视图,但仍然能够与下面的视图交互。基本上和 Show Touches 完全一样,除了特别是在应用程序内。

我的圈子代码:

MainActvity.java

public class Activity1 extends Activity 

drawingView dview;

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    dview = new drawingView(this);
    dview.bringToFront();

    setContentView(dview);
            setContentView(R.layout.activity_activity1);

            GridView gridview = (GridView) findViewById(R.id.gridview);

            gridview.setAdapter(new ImageAdapter(this));

            gridview.setOnItemClickListener(new OnItemClickListener() 
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) 

                    Toast.makeText(Activity1.this, "Position " + position,
                            Toast.LENGTH_SHORT).show();

                
            );

@Override
public boolean onCreateOptionsMenu(Menu menu) 
    getMenuInflater().inflate(R.menu.activity1, menu);
    return true;

drawingView.java

public class drawingView extends View implements OnTouchListener 

static int x, y, r = 0, g = 0, b = 0;
final static int radius = 30;
Paint paint;

public drawingView(Context context) 


    super(context);
    paint = new Paint();
    paint.setAntiAlias(true);
    paint.setARGB(255, r, g, b);

    setFocusable(true);

    this.setOnTouchListener(this);





@Override
public void onDraw(Canvas canvas) 
    canvas.drawCircle(x, y, radius, paint);



@Override
public boolean onTouch(View view, MotionEvent event) 
    view.setVisibility(View.VISIBLE);
    paint.setARGB(255, r, g, b);

    x = (int) event.getX() - (radius / 2); 
    y = (int) event.getY() - (radius / 2);
    randColor();
    invalidate();

    int eventaction = event.getAction();
    switch (eventaction) 
    case MotionEvent.ACTION_UP:

        /*r = 111;
        g = 111;
        b = 111;*/
        paint.setARGB(1, r, g, b);

        break;
    


    return true;



public void randColor() 
    r = 1;
    g = 1;
    b = 1;

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_
  android:layout_
  android:background="#ffffff"
  android:orientation="horizontal"
  tools:context=".Activity1" >

<GridView
    android:id="@+id/gridview"
    android:layout_
    android:layout_
    android:columnWidth="90dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth"
    android:verticalSpacing="10dp" />



</RelativeLayout>

非常感谢任何帮助,

编辑我刷新了上面的所有代码以反映@Onurs Answer,并显示网格代码。

【问题讨论】:

【参考方案1】:

请改用onDraw,使用draw

@Override 
public void draw(Canvas canvas) 
    super.draw(canvas);
    canvas.drawCircle(x, y, radius, paint);
 

【讨论】:

抱歉,这似乎没有任何改变。如果有帮助,我已经发布了我的所有代码

以上是关于在开发选项中创建类似于“显示触摸”选项的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中创建垂直选项卡?

如何在 Swift 中创建类似 Android 的共享选项 [重复]

如何在 html 中创建带有 4 个选项卡的菜单,该菜单将在一页上显示内容?

单击下拉选项 magento 1.7.0.2 在管理面板中创建网格

在 ViewController 中创建选项卡视图的最佳方法是啥

以编程方式在 Markdown 中创建选项卡和绘图