我目前正在开发一个Java SDK,它由原始开发人员在他现有的Android应用程序中安装。现在我需要设置一些事件监听器,例如:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("userDetailsService")
UserDetailsService userDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/login").anonymous().anyRequest().authenticated().and().formLogin().loginPage("/login")
.failureUrl("/login?error").usernameParameter("username").passwordParameter("password")
.and().logout().invalidateHttpSession(true).logoutUrl("/static/j_spring_security_logout")
.logoutSuccessUrl("/login?logout").and()
.exceptionHandling().accessDeniedPage("/403").and().csrf().and().addFilterBefore(new UserTypeFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Bean
public PasswordEncoder passwordEncoder() {
PasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder;
}
@Bean(name = "myAuthenticationManager")
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public UserTypeFilter authenticationFilter() throws Exception {
UserTypeFilter authFilter = new UserTypeFilter();
authFilter.setAuthenticationManager(authenticationManager());
SimpleUrlAuthenticationFailureHandler handler = new SimpleUrlAuthenticationFailureHandler();
handler.setDefaultFailureUrl("/login");
authFilter.setAuthenticationFailureHandler(handler);
return authFilter;
}
}
问题是传入的scrollview可能已经有一个已注册的监听器,所以我的问题是如何挂钩到现有的监听器或注册第二个监听器?
答案 0 :(得分:1)
您是否可以提供具有在其事件的最后(或开始)直接调用onTouch的函数的API,而不是像这样提供API?不太友好,因为它不会存在于初始化部分,但它会更清晰,更少错误。
答案 1 :(得分:1)
也许太讨厌了,但是你可以通过检查触摸将要落在哪里的坐标以及它是否在您注册的Scrollview列表中以某种方式“窃取”触摸事件到达Scrollview之前。然后就好像你还没有处理触摸事件一样 - 这样你就可以在触摸事件传递之前对Scrollview进行操作?