Skip to content
Advertisement

HoneyBee Hive View For android

Hello all can any one help me to create this view i am able to create this view static but i want this dynamic view , According to the data.Thanks

I have Try this but its seem not working like i want BeeHive View

Honey Bee Hive View

Advertisement

Answer

I have made some changes in layout width and height, add if-else loop for each line.

Output:

BeeHive

Code of MainActivity.kt file

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private static final Integer[] INVISIBLE = {1,2,6,10,11,19,20,25,29,30};// this array have cell number that hide in view
    private static final Integer[] INEMPTY = {4,5,9,15,16,21,26,28};// cell number that visible but it has no image(empty cell)
    private static final Integer[] NORMAL = {3,7,8,12,13,14,17,18,22,23,24,27};// normal cells

    private LinearLayout l_root;
    private List<CustomShapeImageView> photoViewList;// each cell view
    DisplayImageOptions options;

    private final static ImageLoader imageLoader = ImageLoader.getInstance();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initImageLoader(this);

        photoViewList=new ArrayList<>();
        options = new DisplayImageOptions.Builder()
                .imageScaleType(ImageScaleType.EXACTLY)
                .showStubImage(R.drawable.avatar)
                .showImageForEmptyUri(R.drawable.avatar)
                .cacheOnDisk(true).build();

        l_root =(LinearLayout)findViewById(R.id.l_root);
        l_root.setOrientation(LinearLayout.VERTICAL);


        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = 1000;  // device screen width

        //int height = size.y;
        addView(width);
        addImage();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);//Menu Resource, Menu
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/NishaJain24/BeeHiveAndroid"));
                startActivity(browserIntent);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    @Override
    public void onClick(View v) {
        String url=v.getTag().toString();
        if (!url.equalsIgnoreCase("-1")){
            Toast.makeText(MainActivity.this,url,Toast.LENGTH_SHORT).show();
        }
    }

    /** ini universal image loader**/
    public static void initImageLoader(Context context) {
        // This configuration tuning is custom. You can tune every option, you may tune some of them,
        // or you can create default configuration by
        // ImageLoaderConfiguration.createDefault(this);
        // method.
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                //.writeDebugLogs() // Remove for release app
                .build();
        //Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config);

    }

    /** add image to each normal cells in order**/
    private void addImage() {

        for (int i = 0; (i < ImagesUrl.IMAGEURLS.length && (i < photoViewList.size())); i++) {
            String image = ImagesUrl.IMAGEURLS[i];
            photoViewList.get(i).setVisibility(View.VISIBLE);
            photoViewList.get(i).setTag(image);
            photoViewList.get(i).setOnClickListener(MainActivity.this);

            final int finalI = i;
            imageLoader.loadImage(image,options, new ImageLoadingListener() {
                @Override
                public void onLoadingStarted(String s, View view) {

                }

                @Override
                public void onLoadingFailed(String s, View view, FailReason failReason) {

                }

                @Override
                public void onLoadingComplete(String s, View view, Bitmap bitmap) {
                    photoViewList.get(finalI).setImageBitmap(bitmap);
                }

                @Override
                public void onLoadingCancelled(String s, View view) {

                }
            });
        }

    }

    /** created beehive view here**/
    private void addView(int width){

        int margin=-(width/8)/4;
        width =(width+(width/16))/4;

        photoViewList.clear();
        for (int j=0;j<5;j++) {
            if(j == 0){
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                //ll.setBackgroundColor(Color.BLUE);
                LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                        width);

                int marginLeft=(j%2 ==0)?(-(width/2)+margin):margin;
                int marginTop=(j !=0)?(-(width/5)):0;


                llParams.setMargins(420, 100, 0,-90 );
                ll.setLayoutParams(llParams);

                for (int i=3;i<4;i++) {
                    int possition=j*4+i;

                    FrameLayout l_farme = new FrameLayout(MainActivity.this);
                    FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(190, 190);
                    FrameLayout.LayoutParams frameParams2 = new FrameLayout.LayoutParams(width - (width/2), width- (width/2));
                    frameParams2.gravity = Gravity.CENTER;
                    l_farme.setLayoutParams(frameParams);

                    ImageView hexagon = new ImageView(MainActivity.this);
                    hexagon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                    hexagon.setLayoutParams(frameParams);

                    CustomShapeImageView photo=new CustomShapeImageView(MainActivity.this,R.drawable.avatar,
                            CustomShapeImageView.Shape.SVG,R.raw.hex);
                    photo.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    photo.setLayoutParams(frameParams2);

                    hexagon.setImageResource(R.drawable.hexagon);
                    photo.setVisibility(View.VISIBLE);
                    l_farme.setVisibility(View.VISIBLE);
                    hexagon.setVisibility(View.VISIBLE);
                    if (Arrays.asList(INVISIBLE).contains(possition)){
                        l_farme.setVisibility(View.INVISIBLE);
                    }else if (Arrays.asList(INEMPTY).contains(possition)){
                        photo.setVisibility(View.INVISIBLE);
                        l_farme.setVisibility(View.VISIBLE);
                    }else if (Arrays.asList(NORMAL).contains(possition)){
                        l_farme.setVisibility(View.VISIBLE);
                        photo.setVisibility(View.INVISIBLE);
                        photo.setTag("-1");
                        photoViewList.add(photo);
                        //photo.setVisibility(View.VISIBLE);
                    }

                    l_farme.addView(photo);
                    l_farme.addView(hexagon);
                    ll.addView(l_farme);
                }
                l_root.addView(ll);
            }else if(j == 1){
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                //ll.setBackgroundColor(Color.BLUE);
                LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        width);

                int marginLeft=(j%2 ==0)?(-(width/2)+margin):margin;
                int marginTop=(j !=0)?(-(width/5)):0;


                llParams.setMargins(300, 0, 0,0 );
                ll.setLayoutParams(llParams);

                for (int i=2;i<=3;i++) {
                    int possition=j*5+i+1;

                    FrameLayout l_farme = new FrameLayout(MainActivity.this);
                    FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(220, 220);
                    FrameLayout.LayoutParams frameParams2 = new FrameLayout.LayoutParams(width-(width/2), width-(width/2));
                    frameParams2.gravity = Gravity.CENTER;
                    l_farme.setLayoutParams(frameParams);

                    ImageView hexagon = new ImageView(MainActivity.this);
                    hexagon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                    hexagon.setLayoutParams(frameParams);

                    CustomShapeImageView photo=new CustomShapeImageView(MainActivity.this,R.drawable.avatar,
                            CustomShapeImageView.Shape.SVG,R.raw.hex);
                    photo.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    photo.setLayoutParams(frameParams2);

                    hexagon.setImageResource(R.drawable.hexagon_small);
                    photo.setVisibility(View.VISIBLE);
                    l_farme.setVisibility(View.VISIBLE);
                    hexagon.setVisibility(View.VISIBLE);
                    if (Arrays.asList(INVISIBLE).contains(possition)){
                        l_farme.setVisibility(View.INVISIBLE);
                    }else if (Arrays.asList(INEMPTY).contains(possition)){
                        photo.setVisibility(View.INVISIBLE);
                        l_farme.setVisibility(View.VISIBLE);
                    }else if (Arrays.asList(NORMAL).contains(possition)){
                        l_farme.setVisibility(View.VISIBLE);
                        photo.setVisibility(View.INVISIBLE);
                        photo.setTag("-1");
                        photoViewList.add(photo);
                        //photo.setVisibility(View.VISIBLE);
                    }

                    l_farme.addView(photo);
                    l_farme.addView(hexagon);
                    ll.addView(l_farme);
                }
                l_root.addView(ll);
            }else if(j == 2){
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                //ll.setBackgroundColor(Color.BLUE);
                LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        width);

                int marginLeft=(j%2 ==0)?(-(width/2)+margin):margin;
                int marginTop=(j !=0)?(-(width/5)):0;


                llParams.setMargins(-130, marginTop, 0,0 );
                ll.setLayoutParams(llParams);

                for (int i=0;i<=3;i++) {
                    int possition=j*5+i + 1;

                    FrameLayout l_farme = new FrameLayout(MainActivity.this);
                    FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(260, 260);
                    FrameLayout.LayoutParams frameParams2 = new FrameLayout.LayoutParams(width-(width/2), width-(width/2));
                    frameParams2.gravity = Gravity.CENTER;
                    l_farme.setLayoutParams(frameParams);

                    ImageView hexagon = new ImageView(MainActivity.this);
                    hexagon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                    hexagon.setLayoutParams(frameParams);

                    CustomShapeImageView photo=new CustomShapeImageView(MainActivity.this,R.drawable.avatar,
                            CustomShapeImageView.Shape.SVG,R.raw.hex);
                    photo.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    photo.setLayoutParams(frameParams2);

                    hexagon.setImageResource(R.drawable.hexagon_small);
                    photo.setVisibility(View.VISIBLE);
                    l_farme.setVisibility(View.VISIBLE);
                    hexagon.setVisibility(View.VISIBLE);
                    if (Arrays.asList(INVISIBLE).contains(possition)){
                        l_farme.setVisibility(View.INVISIBLE);
                    }else if (Arrays.asList(INEMPTY).contains(possition)){
                        photo.setVisibility(View.INVISIBLE);
                        l_farme.setVisibility(View.VISIBLE);
                    }else if (Arrays.asList(NORMAL).contains(possition)){
                        l_farme.setVisibility(View.VISIBLE);
                        photo.setVisibility(View.INVISIBLE);
                        photo.setTag("-1");
                        photoViewList.add(photo);
                        //photo.setVisibility(View.VISIBLE);
                    }

                    l_farme.addView(photo);
                    l_farme.addView(hexagon);
                    ll.addView(l_farme);
                }
                l_root.addView(ll);
            }else if(j == 3){
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                //ll.setBackgroundColor(Color.BLUE);
                LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        width);

                int marginLeft=(j%2 ==0)?(-(width/2)+margin):margin;
                int marginTop=(j !=0)?(-(width/5)):0;


                llParams.setMargins(80, 0, 40,0 );
                ll.setLayoutParams(llParams);

                for (int i=1;i<=3;i++) {
                    int possition=j*6+i+1;

                    FrameLayout l_farme = new FrameLayout(MainActivity.this);
                    FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(220, 220);
                    FrameLayout.LayoutParams frameParams2 = new FrameLayout.LayoutParams(width-(width/2), width-(width/2));
                    frameParams2.gravity = Gravity.CENTER;
                    l_farme.setLayoutParams(frameParams);

                    ImageView hexagon = new ImageView(MainActivity.this);
                    hexagon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                    hexagon.setLayoutParams(frameParams);

                    CustomShapeImageView photo=new CustomShapeImageView(MainActivity.this,R.drawable.avatar,
                            CustomShapeImageView.Shape.SVG,R.raw.hex);
                    photo.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    photo.setLayoutParams(frameParams2);

                    hexagon.setImageResource(R.drawable.hexagon_small);
                    photo.setVisibility(View.VISIBLE);
                    l_farme.setVisibility(View.VISIBLE);
                    hexagon.setVisibility(View.VISIBLE);
                    if (Arrays.asList(INVISIBLE).contains(possition)){
                        l_farme.setVisibility(View.INVISIBLE);
                    }else if (Arrays.asList(INEMPTY).contains(possition)){
                        photo.setVisibility(View.INVISIBLE);
                        l_farme.setVisibility(View.VISIBLE);
                    }else if (Arrays.asList(NORMAL).contains(possition)){
                        l_farme.setVisibility(View.VISIBLE);
                        photo.setVisibility(View.INVISIBLE);
                        photo.setTag("-1");
                        photoViewList.add(photo);
                        //photo.setVisibility(View.VISIBLE);
                    }

                    l_farme.addView(photo);
                    l_farme.addView(hexagon);
                    ll.addView(l_farme);
                }
                l_root.addView(ll);
            }else if(j ==  4){
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                //ll.setBackgroundColor(Color.BLUE);
                LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        width);

                int marginLeft=(j%2 ==0)?(-(width/2)+margin):margin;
                int marginTop=(j !=0)?(-(width/5)):0;


                llParams.setMargins(230, marginTop, 0,0 );
                ll.setLayoutParams(llParams);

                for (int i=2;i<=3;i++) {
                    int possition=j*6+i-1;

                    FrameLayout l_farme = new FrameLayout(MainActivity.this);
                    FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(190, 190);
                    FrameLayout.LayoutParams frameParams2 = new FrameLayout.LayoutParams(width-(width/2), width-(width/2));
                    frameParams2.gravity = Gravity.CENTER;
                    l_farme.setLayoutParams(frameParams);

                    ImageView hexagon = new ImageView(MainActivity.this);
                    hexagon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                    hexagon.setLayoutParams(frameParams);

                    CustomShapeImageView photo=new CustomShapeImageView(MainActivity.this,R.drawable.avatar,
                            CustomShapeImageView.Shape.SVG,R.raw.hex);
                    photo.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    photo.setLayoutParams(frameParams2);

                    hexagon.setImageResource(R.drawable.hexagon_small);
                    photo.setVisibility(View.VISIBLE);
                    l_farme.setVisibility(View.VISIBLE);
                    hexagon.setVisibility(View.VISIBLE);
                    if (Arrays.asList(INVISIBLE).contains(possition)){
                        l_farme.setVisibility(View.INVISIBLE);
                    }else if (Arrays.asList(INEMPTY).contains(possition)){
                        photo.setVisibility(View.INVISIBLE);
                        l_farme.setVisibility(View.VISIBLE);
                    }else if (Arrays.asList(NORMAL).contains(possition)){
                        l_farme.setVisibility(View.VISIBLE);
                        photo.setVisibility(View.INVISIBLE);
                        photo.setTag("-1");
                        photoViewList.add(photo);
                        //photo.setVisibility(View.VISIBLE);
                    }

                    l_farme.addView(photo);
                    l_farme.addView(hexagon);
                    ll.addView(l_farme);
                }
                l_root.addView(ll);
            }else{
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                //ll.setBackgroundColor(Color.BLUE);
                LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        width);

                int marginLeft=(j%2 ==0)?(-(width/2)+margin):margin;
                int marginTop=(j !=0)?(-(width/5)):0;


                llParams.setMargins(marginLeft, marginTop, 0,0 );
                ll.setLayoutParams(llParams);

                for (int i=0;i<=5;i++) {
                    int possition=j*5+i +1;

                    FrameLayout l_farme = new FrameLayout(MainActivity.this);
                    FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(width, width);
                    FrameLayout.LayoutParams frameParams2 = new FrameLayout.LayoutParams(width-(width/2), width-(width/2));
                    frameParams2.gravity = Gravity.CENTER;
                    l_farme.setLayoutParams(frameParams);

                    ImageView hexagon = new ImageView(MainActivity.this);
                    hexagon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                    hexagon.setLayoutParams(frameParams);

                    CustomShapeImageView photo=new CustomShapeImageView(MainActivity.this,R.drawable.avatar,
                            CustomShapeImageView.Shape.SVG,R.raw.hex);
                    photo.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                    photo.setLayoutParams(frameParams2);

                    hexagon.setImageResource(R.drawable.hexagon_small);
                    photo.setVisibility(View.VISIBLE);
                    l_farme.setVisibility(View.VISIBLE);
                    hexagon.setVisibility(View.VISIBLE);
                    if (Arrays.asList(INVISIBLE).contains(possition)){
                        l_farme.setVisibility(View.INVISIBLE);
                    }else if (Arrays.asList(INEMPTY).contains(possition)){
                        photo.setVisibility(View.INVISIBLE);
                        l_farme.setVisibility(View.VISIBLE);
                    }else if (Arrays.asList(NORMAL).contains(possition)){
                        l_farme.setVisibility(View.VISIBLE);
                        photo.setVisibility(View.INVISIBLE);
                        photo.setTag("-1");
                        photoViewList.add(photo);
                        //photo.setVisibility(View.VISIBLE);
                    }

                    l_farme.addView(photo);
                    l_farme.addView(hexagon);
                    ll.addView(l_farme);
                }
                l_root.addView(ll);
            }
        }
    }

}
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement