如何创建钢琴布局 [英] How to create layout for piano

查看:103
本文介绍了如何创建钢琴布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 朋友你好我工作的钢琴应用程序,我面临的布局创造了一些问题,我想创建类似下面的布局
 

 ,但我能够创建仅此
 

现在我想添加所有的黑色按钮,但问题是,我不能够添加上面的按钮来看我怎么能做到这一点,我目前的布局code下面请建议我,我怎么能现在做到这一点我能够点击所有的按钮,一旦我添加所有的按钮,然后每个按钮应该点击。

 < XML版本=1.0编码=UTF-8&GT?;
< RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:背景=@色/白
    机器人:方向=横向>

    <的LinearLayout
        机器人:ID =@ + ID / relativeLayout2
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =match_parent
        机器人:背景=@色/白
        机器人:weightSum =1.5>

        < ImageView的
            机器人:ID =@ + ID / BW 1
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / BW2
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / BW3
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / BW4
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / BW5
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw6
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / BW7
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw8
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw9
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / BW10
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw11
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw12
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw13
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw14
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>

        < ImageView的
            机器人:ID =@ + ID / bw15
            机器人:layout_width =0dip
            机器人:layout_height =match_parent
            机器人:layout_weight =1
            机器人:背景=@可绘制/ blacknew/>
    < / LinearLayout中>

< / RelativeLayout的>
 

解决方案

我会建议借鉴自己的这些白色和黑键。使用视图类,覆盖draw()方法,并去了。当然,你可以尝试使用RelativeLayout的,但以后你就会有更多的问题与(如多点触摸和滑动检测)。

 类钢琴扩展视图{
    公共钢琴(上下文的背景下){
        超(上下文);
        // TODO自动生成构造函数存根
    }

    位图whiteKey,blackKey;
    涂料粉刷=新的油漆();

    公共无效画(油画画布){
        如果(whiteKey == NULL){
            whiteKey = BitmapFactory.de codeResource(getResources(),R.drawable.whiteKey);
        }
        如果(blackKey == NULL){
            blackKey = BitmapFactory.de codeResource(getResources(),R.drawable.blackKey);
        }

        INT键= 10;

        //画出白键
        的for(int i = 0; I<按键;我++){
            canvas.drawBitmap(whiteKey,I * whiteKey.getWidth(),0,油漆);
        }
        //画出黑键
        的for(int i = 0; I<按键;我++){
            如果(ⅰ= 3及!&安培;!I = 7){
                canvas.drawBitmap(blackKey,I * blackKey.getWidth()+ blackKey.getWidth()* 0.5F,0,油漆);
            }
        }
    }
};
 

Hello friends i am working on piano app and i am facing some problem in layout creation i want to create layout like below 

but i am able to create only this 

now i want to add all the black buttons but problem is that i am not able to add view above that buttons how can i do this, my current layout code is below please suggest me how can i achieve this now i am able to click all the buttons once i add all the buttons then each button should be clickable.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:weightSum="1.5" >

        <ImageView
            android:id="@+id/bw1"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw2"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw3"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw4"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw5"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw6"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw7"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw8"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw9"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw10"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw11"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw12"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw13"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw14"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />

        <ImageView
            android:id="@+id/bw15"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight=".1"
            android:background="@drawable/blacknew" />
    </LinearLayout>

</RelativeLayout> 

解决方案

I would suggest drawing these white and black keys on your own. Use the View class, override draw() method and go for it. Of course you can try to use RelativeLayout, but later you'll have more problems with that (like multiple touches and slides detection).

class Piano extends View {
    public Piano(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    Bitmap whiteKey, blackKey;
    Paint paint = new Paint();

    public void draw(Canvas canvas) {
        if (whiteKey == null) {
            whiteKey = BitmapFactory.decodeResource(getResources(), R.drawable.whiteKey);
        }
        if (blackKey == null) {
            blackKey = BitmapFactory.decodeResource(getResources(), R.drawable.blackKey);
        }

        int keys = 10;

        // draw white keys
        for (int i = 0; i < keys; i++) {
            canvas.drawBitmap(whiteKey, i * whiteKey.getWidth(), 0, paint);
        }
        // draw black keys
        for (int i = 0; i < keys; i++) {
            if (i != 3 && i != 7) {
                canvas.drawBitmap(blackKey, i * blackKey.getWidth()+blackKey.getWidth()*0.5f, 0, paint);
            }
        }
    }
};

这篇关于如何创建钢琴布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆