import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.GestureDetector.OnGestureListener; import android.widget.LinearLayout; import android.widget.TextView; public class AndroidTestActivity extends Activity implements OnGestureListener { private LinearLayout main; private TextView viewA; private GestureDetector gestureScanner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gestureScanner = new GestureDetector(this); gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){ public boolean onDoubleTap(MotionEvent e) { viewA.setText("-" + "onDoubleTap" + "-"); //双击时产生一次 Log.v("test", "onDoubleTap"); return false; public boolean onDoubleTapEvent(MotionEvent e) { //双击时产生两次 Log.v("test", "onDoubleTapEvent"); return false; public boolean onSingleTapConfirmed(MotionEvent e) { viewA.setText("-" + "onSingleTapConfirmed" + "-"); //短快的点击算一次单击 Log.v("test", "onSingleTapConfirmed"); return false; main = new LinearLayout(this); main.setBackgroundColor(Color.GRAY); main.setLayoutParams(new LinearLayout.LayoutParams(320,480)); main.setOrientation(LinearLayout.VERTICAL); viewA = new TextView(this); viewA.setBackgroundColor(Color.YELLOW); viewA.setTextColor(Color.BLACK); viewA.setTextSize(16); viewA.setLayoutParams(new LinearLayout.LayoutParams(320,50)); main.addView(viewA); setContentView(main); public boolean onTouchEvent(MotionEvent me) { return gestureScanner.onTouchEvent(me); public boolean onDown(MotionEvent e) { //viewA.setText("-" + "DOWN" + "-"); return true; public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //viewA.setText("-" + "FLING" + "- "+velocityX + "- "+velocityY); Log.v("test", "onFling "+e1.getX()+" "+e2.getX()); return true; public void onLongPress(MotionEvent e) { //viewA.setText("-" + "LONG PRESS" + "-"); public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { //viewA.setText("-" + "SCROLL" + "- "+distanceX + "- "+distanceY); Log.v("test", "onScroll "+e1.getX()+" "+e2.getX()); return true; public void onShowPress(MotionEvent e) { //viewA.setText("-" + "SHOW PRESS" + "-"); public boolean onSingleTapUp(MotionEvent e) { Log.v("test", "onSingleTapUp"); //viewA.setText("-" + "SINGLE TAP UP" + "-"+ i++); return true; Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能的不引人注意,同时还向用户显示信息希望他们看到。 测试 APP 下载地址: 首先将上面地址的 apk 包下载到本地,并安装到模拟器中;在模拟器中打开 API Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能的不引人注意,同时还向用户显示信息希望他们看到。 测试 APP 下载地址: 首先将上面地址的 apk 包下载到本地,并安装到模拟器中;在模拟器中打开 API 【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )
【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )