2017-03-07 3 views
0

アプリの主な目的は、学生向けの教育コースを提供することです。レッスンはアンドロイドのビューの任意の組み合わせであることができAndroidアプリ 内部からのコースのコンテンツを作成ドラッグ&ドロップによる新しいビューの作成とコントロール(カスタムレイアウト)

  • 教師: 私は2人の俳優を持っています。
  • これらのコースを表示し、教訓と対話する学生は、(のみ、このレッスンを表示)の音を聞くために、ボタンをクリックすることができる

ステージ1:がドラッグを実装し、これまでのところ、私が持っているエディタ
をドロップ新しいビュー(ImageViews TextViews ...など)を作成できました&新しいレイアウトでそれらをドロップします。

しかし、私はそれらを落とすと、私はもう彼らにコントロールがありません。今私は、私が望まない1つのスタイルのレイアウトに制限されています。私はビューを追加することができますアンドロイドスタジオレイアウトエディタ、のレベルに到達したい、自分の位置、大きさを変更するなど

ステージ2:保存レイアウト あなたはレイアウトを保存する方法をお勧めします生徒に表示するデータ。 JSON? XML?

ステージ3:解析レイアウトデータ
私は、XMLパーサーを実装し、私はアンドロイドのスタジオで作成したレイアウトを使用して、それをテストしています。しかし、あなたの提案に応じて、私はレッスンを解析する方法を変えるかもしれません。

ドラッグ& DropLayoutエディタ - インストラクターレイアウト - 学生レイアウト - Androidのメーカー

pic

答えて

0

私は次のことをお勧めします:

  • ステージ1

カスタムを作成します。 caのすべてのウィジェットのビューnを落とす(LinearLayout,ImageViewなど)。それらすべてが、次のインターフェイスを実装してみましょう:

Layoutは、そのビューのレイアウト(XMLまたはJSON)の直列化可能な表現であると LayoutEditorはその View(layout_width、layout_height背景の属性を変更するために使用することができます別のインターフェイスである
interface Layout { 
    Layout getLayout(); 
    LayoutEditor getLayoutEditor(); 
} 

あなたが持っている2

そう後、など)

  • ステージウィジェットをドラッグアンドドロップすると、Layoutインターフェイスを実装しているビューのビュー階層を取得することができます。このツリーを再帰的に歩いて、各ビューのgetLayout()に電話し、階層Layoutをつなぎ合わせてください。その後、シリアル化して保存することができます。

    • ステージ3

    あなたが保存され、レイアウトツリーを歩くとそれにビュー階層を再作成Layoutをデシリアライズ。

    いくつかの吸引についてはproteusをご覧ください。これは、JSONレイアウトを使用して、ネイティブAndroidビューを拡張します。

+0

LayoutEditorを使用してビューのサイズ変更やスケーリングを行うことができますか、それともドラッグアンドドロップでしか機能しないのですか? これを事前におねがいします。 –

+0

キャンバス上のウィジェットを長押しするかダブルタップするか、属性値を編集したり追加したり削除したりできるフォームを開くと、実装が簡単です。サイズ変更のサイズ変更は実装が困難な場合があります。あなたが行く方法は、すべてのカスタムウィジェットでタッチリスナーとジェスチャー検出器を作成することです。個人的には、アプリのバージョン1といっても過度の殺害だと感じています。 – vader

+0

レイアウトエディタは、フォームを作成してフォームと対話するために使用するインターフェイスです。それはset(String属性、Object値)メソッドとObject getAtrribute(String name)メソッドを持つかもしれません。また、フォームページをビルドするためのIterator getAllAttributes()もあります。あるいは、その行の何か。私が助けてくれることを願っています。あなたのプロジェクトでは最高のものです。 – vader

関連する問題