• Stars
    star
    232
  • Rank 172,847 (Top 4 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A viewgroup enable custom size of childviews and change their position which has same size by drag

Android FreeSizeDraggableLayout


A viewgroup enable custom size of childviews and change their position which has same size by drag


Analyze

FreeSizeDraggableLayout实现过程解析

Demo

FreeSizeDraggableLayout

Download Demo

Usage


Gradle

dependencies {
   compile 'com.miao:freesizedraggablelayout:0.0.2'
}

Maven

<dependency>
  <groupId>com.miao</groupId>
  <artifactId>freesizedraggablelayout</artifactId>
  <version>0.0.2</version>
  <type>pom</type>
</dependency>

Use it in your own code:

1.create the viewgroup on your xml:

	<com.miao.freesizedraggablelayout.FreeSizeDraggableLayout
        android:id="@+id/fsd_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

2.set the viewgroup and set the size of it

FreeSizeDraggableLayout fsdLayout = (FreeSizeDraggableLayout) findViewById(R.id.fsd_layout);
fsdLayout.setUnitWidthNum(4);
fsdLayout.setUnitHeightNum(4);

3.create a DetailView list:

List<DetailView> list = new ArrayList<>();
/*
DetailView:
public DetailView(Point p, int width, int height, View v) {
    setPoint(p);
    setWidhtNum(width);
    setHeightNum(height);
    setView(v);
}
*/
list.add(new DetailView(new Point(0, 0), 2, 2, createButton(1)));
list.add(new DetailView(new Point(2, 0), 2, 2, createButton(2)));
list.add(new DetailView(new Point(0, 2), 2, 2, createButton(3)));
list.add(new DetailView(new Point(2, 2), 2, 2, createButton(4)));
/*
private Button createButton(int i) {
    final Button btn = new Button(getApplicationContext());
    btn.setText("Button - " + i);
    btn.setBackgroundColor(Color.BLACK);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), btn.getText(), Toast.LENGTH_SHORT).show();
        }
    });
    return btn;
}
*/

4.set the list as ViewGroup's datasource

freeSizeDraggableLayout.setList(list);

PS: Function of change position between group position and draggled item(in v0.0.1, we can just change two view has the same size, we can change the position of whole group of views and the view dragged if they have the same size in v0.0.2. just like the third scenario in demo) is added in version 0.0.2, set it disable if you don't need it:

freeSizeDraggableLayout.setGroupChangeEnable(false);