在Android中有时需要模拟某一个View的touch事件,来达到对该View的功能相应处理的简单化,因为你只需要模拟对该View的touch事件,便能沿着原来touch的事件相应走下去,不需要添加任何代码,你可以这么做:
从代码可以看出这里的重点是需要知道两个点:一是你模拟点击的坐标,在这里就是x和y,二就是你需要设置响应这个点击事件的View,这里是一个SeekBar,这个点击的坐标一般也选在这个需要响应View上,我的使用场景是在遥控器的确定键的相应上,如果还有新的应用场景,请多交流哦。
使用同一个数据源,点击某一项时,不管是listView还是gridView,比如是选中,那么数据源中每个item对应的数据可以添加一个选中focused字段,只要改变共同的数据源,然后调用adapternotifydatasetchanged就可以了
获取RecyclerView 的滑动距离: 滑动到一定程度后清零是因为 getChildAt(0) 获得的是第一个可见view 用LinearLayoutManager的recyclerview测试了一下确实如此。 如果LayoutManager用的是LinearLayoutManager 可以用下面的办法,还能向下滑动多。
处理点击listview中item的事件,推荐使用 listViewsetOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView parent,Viewview, int position, long id) {// TODO Auto-generated method。
思路是:因为ViewHolder我们可以拿到每个Item的根布局,所以如果我们为根布局设置单独的OnClick监听并将其开放给Adapter,那不就可以在组装RecyclerView时就能够设置ItemClickListener,只不过这个Listener不是设置到RecyclerView上而是设置到Ad。
项目中使用到了横向的ListView样子的功能,一开始使用Gallery做,由于Gallery的自带d性功能,效果不理想,于是使用网上的一些开源的横向ListView,但是效果很卡, 最后使用了v7包中的RecyclerView,初次使用,不太熟练,对其进行了简单的封装 pa。
public View getViewByPosition(int pos, ListView listView) {final int firstListItemPosition = listViewgetFirstVisiblePosition();final int lastListItemPosition = firstListItemPosition + listViewgetChildCount() - 1;if (pos < fir。
RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。 在开发RecyclerView时充分考虑了扩展性,因此用它可以创建想到的任何种类的的布。
RecyclerView显示Item布局不一致 在自定义RecyclerAdapter的时候,在重写onCreateViewHolder方法是使用了 @Override public H onCreateViewHolder(ViewGroup parent, int viewType) { View view=Viewinflate(context,layoutId,null); return vi。
直接在Adapter中的onBindViewHolder()方法中实现点击事件 @Override public void onBindViewHolder(MyViewHolder viewHolder, final int postion) { viewHoldertextViewsetText(mDatasget(postion)); viewHolderrootViewsetOnCli。
方法步骤1在你当前的xml 创建一个绝对布局(为了取得绝对坐标的)2再建一个布局,就是你想要的相对布局3通过onTouch方法监听你所点的位置,把相对布局加到绝对布局里,具体代码如下:protected void onCreate(Bundle savedInstanceState) private void addView(int x, int y) { mAbsoluteLLayoutremoveAllViews(); inflate = getLayoutInflater()inflate(Rlayoutactivity_aa, null); int width = inflategetWidth(); int height = inflategetHeight(); mAbsoluteLLayoutaddView(inflate, new AbsoluteLayoutLayoutParams(50, 50, x, y)); } @Override public boolean onTouch(View v, MotionEvent event) { switch (eventgetAction()) { case MotionEventACTION_DOWN: int x = (int) eventgetX(); int y = (int) eventgetY(); addView( x, y); return true;
最近项目中有个需求,点击某一个按钮以外的位置触发按钮的点击事件。 但是这整个view 都是第三方的。
通过父容器的dispatchTouchEvent(MotionEvent ev) 对事件进行控制和分发。
(1)找到要触发的按钮,获取他的坐标 通过递归找到对应的控件
(2)判断点击是否在控件上
/
判断是否点击在view上
@param pointX
@param pointY
@param view
@return
/
private boolean isPointInView(float pointX, float pointY, View view) {
if (view ==null) {
return false;
}
int[] location =new int[2];
viewgetLocationOnScreen(location);
int x = location[0];
int y = location[1];
if (pointX >= x && pointX <= x + viewgetWidth() && pointY >= y && pointY <= y + viewgetHeight()) {
return true;
}
return false;
}
(3) 如果不在控件的位置,则通过传递 控件的MotionEvent 设置MotionEvent 的location ,分发childdispatchTouchEvent 事件
private boolean dispatchChildTouchEvent(MotionEvent ev, View child) {
MotionEvent transformedEvent = MotionEventobtain(ev);
if (downPosX ==0 ||downPosY ==0) {
int wd = Mathmax(childgetWidth(), 1);
int hg = Mathmax(childgetHeight(), 1);
Random random =new Random();
downPosX = randomnextFloat() (wd -1);
downPosY = randomnextFloat() (hg -1);
}
transformedEventsetLocation(downPosX, downPosY);
Loggerd(TAG, "dispatchChildTouchEvent"+" posx " +downPosX +" posy " +downPosY);
return childdispatchTouchEvent(transformedEvent);
}
以上就是关于android 如何模拟 自动点击某个定点坐标全部的内容,包括:android 如何模拟 自动点击某个定点坐标、android recyclerview item控件怎么获取当前item的position、tablayout在移动中如何计算子控件的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)