gpt4 book ai didi

java - 在 Dev Options 中创建类似于 'Show Touches' 选项的内容

转载 作者:行者123 更新时间:2023-11-29 08:47:23 25 4
gpt4 key购买 nike

我正在尝试为我的应用程序构建一些东西,其功能与较新 Android 版本的开发设置中的“Show Touches”选项基本完全相同。

当用户在应用程序中触摸屏幕时,一个小圆圈应直接出现在他们的手指下方并跟随它绕过屏幕。

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

在我的例子中,我需要类似顶部触摸 View 的东西,但仍然能够与下面的 View 进行交互。基本上与 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;
}

绘图 View .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_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="horizontal"
tools:context=".Activity1" >

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



</RelativeLayout>

非常感谢任何帮助,

编辑 我刷新了上面的所有代码以反射(reflect)@Onurs 的回答,并显示网格代码。

最佳答案

代替onDraw,使用draw .

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

关于java - 在 Dev Options 中创建类似于 'Show Touches' 选项的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com