我已經看到了它在海豚瀏覽器。有一些默認情況下已經創建的手勢。他們將重新繪製自己,以便用戶知道從哪裏開始繪畫。我注意到在Gesture對象中,有一個名爲toPath()的方法。但我不知道如何使用它,我不確定我是否在正確的軌道上。有人能告訴我該怎麼做嗎?謝謝。你可以看看下面的圖片。手勢自動繪製本身
Q
手勢自動繪製本身
0
A
回答
1
所有我會建議看看GestureBuilder從SDK樣本應用程序的第一個。它正是在你的問題中顯示的(小手勢縮略圖)。
我稍微延展的典範之作的Gesture
API的使用更加清晰:
添加以下代碼GestureBuilderActivity從GeatureBuilder樣本:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
final Intent intent = new Intent(getApplicationContext(), ShowGestureActivity.class);
intent.putExtra(ShowGestureActivity.GESTURE_NAME_EXTRA, ((NamedGesture)v.getTag()).name);
startActivity(intent);
}
它將推出新的測試活動ShowGestureActivity:
public class ShowGestureActivity extends Activity {
public static final String GESTURE_NAME_EXTRA = "gesture_extra";
private Gesture mGesture = null;
private FrameLayout mContainer;
private MyPathView mMyPathView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_gesture);
final ArrayList<Gesture> gestures = GestureBuilderActivity.getStore()
.getGestures(getIntent().getStringExtra(GESTURE_NAME_EXTRA));
if (gestures.size() == 1) {
mGesture = gestures.get(0);
} else {
Toast.makeText(getApplicationContext(), "No gesture available!", Toast.LENGTH_LONG).show();
}
mContainer = (FrameLayout) findViewById(R.id.container);
mMyPathView = (MyPathView) findViewById(R.id.myPathView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.show_gesture_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final int id = item.getItemId();
if (mGesture == null) {
return false;
}
switch (id) {
case R.id.action_show_gesture_bmp:
final Bitmap gestureBmp = mGesture.toBitmap(mContainer.getWidth(), mContainer.getHeight(),
getResources().getDimensionPixelSize(R.dimen.gesture_thumbnail_inset), Color.YELLOW);
mMyPathView.setVisibility(View.GONE);
mContainer.setBackground(new BitmapDrawable(getResources(), gestureBmp));
return true;
case R.id.action_show_gesture_path:
mMyPathView.setPath(mGesture.toPath(mContainer.getWidth(), mContainer.getHeight(),
getResources().getDimensionPixelSize(R.dimen.gesture_thumbnail_inset), 10));
mMyPathView.setVisibility(View.VISIBLE);
mContainer.setBackground(null);
return true;
}
return super.onOptionsItemSelected(item);
}
}
在onOptionsItemSelected
,你可以看到兩個Gesture
方法的使用可用於繪製。似乎toBitmap
是很清楚的(GesturesBuilder應用程序本身使用,對於手勢縮略圖方式顯示在列表中)。 關於toPath
:它爲您提供了對應於Gesture
的路徑。之後,您可以根據需要使用該路徑進行繪製。 MyPathView
從測試活動上面提供了這樣做的最簡單的方法:
public class MyPathView extends View {
private Paint mPaint;
private Path mPath = null;
public MyPathView(Context context) {
super(context);
init(null, 0);
}
public MyPathView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs, 0);
}
public MyPathView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs, defStyle);
}
private void init(AttributeSet attrs, int defStyle) {
mPaint = new Paint();
mPaint.setColor(Color.YELLOW);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(getResources().getDimensionPixelSize(R.dimen.paint_width));
}
public void setPath(final Path path) {
mPath = path;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mPath != null) {
canvas.drawPath(mPath, mPaint);
}
}
}
和XML的(只是爲了舉例方便編譯):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container">
<com.sandrstar.testapp.test.MyPathView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/myPathView"
android:visibility="gone"/>
</FrameLayout>
如果要應用某種形式的動畫手勢繪圖,你需要獲得路徑,創建如上所述的自定義視圖,並應用一些動畫方法,例如就像一個在這裏描述Draw path on canvas with animation
相關問題
- 1. 使用自定義導航控制器時啓用回手勢滑動手勢
- 2. 繪製動畫的行刪除自身
- 3. 在拖動手勢期間在Corona中繪製曲線?
- 4. 繪製一個矩形,使用移動手勢
- 5. 手勢和彩色繪圖
- 6. 如何在同一個手勢疊加中繪製多個彩色手勢
- 7. 製作滑動手勢動畫
- 8. 如何在手動繪製的控件內繪製手動繪製的控件?
- 9. 平移手勢和滑動手勢
- 10. Android水平文本滾動 - 自動和手勢
- 11. 滑動菜單手勢將覆蓋圖形手勢的可滾動手勢 - android
- 12. 手勢 - 當手指運動
- 13. Kinect手揮動手勢
- 14. 手勢到文本
- 15. R:繪製IRF手動
- 16. 滑動手勢和導航控制器
- 17. UITextView滑動手勢
- 18. 滑動ios手勢
- 19. 用手勢滑動動畫
- 20. 滑動手勢滑動UIViews
- 21. 拖動手勢識別器干擾滑動手勢識別器
- 22. 捏手勢box2d身體/ cocos2d精靈
- 23. 自定義UIScrollView手勢
- 24. UIGestureRecognizer自定義手勢
- 25. 自長按手勢識別
- 26. 自定義iOS手勢
- 27. 的iOS:自來水手勢
- 28. 使用手勢控制
- 29. 用手勢控制視頻
- 30. 如何創建和繪製一個視覺輕掃手勢
對不起,我遲到的答覆......太好了!我現在明白了。在閱讀你的答案之前,我使用[AnimatedPathView](https://github.com/matthewrkula/AnimatedPathView)來實現這個動畫。但是,假設我有很多不同的手勢,那麼按照您給我的鏈接的指示,我怎樣才能控制每個手勢的每個動畫? – Androidizing 2014-09-05 14:42:13
控制每一個動畫究竟是什麼意思?該AnimatedPathView +動畫提供足夠的動畫控制。另外,爲了更好地控制動畫(例如啓動 - 停止),可以輕鬆擴展我在答案中的鏈接查看。 – sandrstar 2014-09-05 14:52:47
我的意思是我想用你的方式而不是圖書館。請忘記AnimatedPathView,我只是碰巧提到它。現在我正在處理你給我的鏈接。謝謝:) – Androidizing 2014-09-05 15:30:22