use*_*400 42 android ontouchlistener touch-event android-fragments
我正在构建一个我需要处理触摸事件的界面.特别是我能够将它们仅启用到片段中的受限区域.为了更好地理解问题,尊重标准和我的应用程序的目标,我计划了导航抽屉,它假设存在许多片段(而不是活动).触摸事件的活动很容易实现,另一方面,我在互联网上读到,片段可能会成为一个问题.
我的应用程序在体系结构级别如下: - MainActivity.java - NavigationDrawer.java - TestFragment.java(现在单个片段,等待解决问题)
我没有找到解释如何做得好(或如何解决问题)的解决方案或教程.然后我问你,简化问题只是" 在片段中启用触摸事件(在这种情况下为getPressure()) ".下面是一些可能有助于解决问题的代码:
TestFragment
public class TestFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public static TestFragment newInstance(int sectionNumber) {
TestFragment fragment = new TestFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public TestFragment() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_test, container, false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// Here I want to return the press value (0 to 1)
}
}
Run Code Online (Sandbox Code Playgroud)
如何将监听器与整个片段相关联?在特定区域的情况下?最后,我怎样才能返回屏幕上的压力值?
非常感谢你的建议!:)
小智 100
我不确定我是否理解你的问题,但我会尽力回答这个问题.所以要在片段上获取触摸事件,我会这样做:
- 在片段onCreateView中:
View view = inflater.inflate(R.layout.fragment_test, container, false);
view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
//do something
}
return true;
}
});
//here the rest of your code
return view;
Run Code Online (Sandbox Code Playgroud)
您可以在onTouch中检查不同的MotionEvent,例如:
MotionEvent.ACTION_DOWN, MotionEvent.ACTION_UP,...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62390 次 |
最近记录: |