Как добавить ImageView в класс представления костюма в Android Studio?

В основном я создал класс costum, который расширяет представление, и то, что он делает в настоящее время, рисует горизонтальную линию, где экран прикасается, пока он не будет выпущен. То, что я хочу достичь, это добавить ImageView в фоновом режиме, позади линии, так что линия рисуется на переднем плане. Вот проблема, так как я понятия не имею, как добавить ImageView к этому представлению, несмотря на все исследования.

В моем понимании переопределенная функция onDraw должна: #1 очистить экран — > #2 нарисовать изображение на ImageView — > > #3 нарисовать линию на каждой итерации. Мне придется позже реализовать динамическое изменение изображения на упомянутом ImageView, если эта информация каким-то образом поможет.

public class RateView extends View{

float touchY = (getHeight() / 2);
boolean isPressed = false;
Paint paint=new Paint();

public RateView(Context context, AttributeSet attrs) {
    super(context);
    this.setBackgroundColor(Color.parseColor("#da5f02"));
    init(null);
}

private void init(AttributeSet attr){
    paint.setColor(Color.GREEN);
    paint.setStrokeWidth(10);
    paint.setAntiAlias(true);
}

@Override
public void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
        if (isPressed){
            canvas.drawLine(5, touchY, (getWidth()-10), touchY,paint);
        }
}

@Override
public boolean onTouchEvent(MotionEvent motionEvent){

    switch (motionEvent.getAction()){
        case MotionEvent.ACTION_DOWN:
            isPressed = true;
            break;
        case MotionEvent.ACTION_MOVE:
            touchY = motionEvent.getY();
            break;
        case MotionEvent.ACTION_UP:
            isPressed = false;
            break;
    }
    invalidate();
    return true;
}}

Это мой класс представления костюма. Мой основной класс только расширяет AppCompatActivity и устанавливает contentView к вышеуказанному представлению. Большое спасибо за ответы заранее!

EDIT: MainActivity

public class MainScreen extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View rateView = new RateView(this, null);
    setContentView(rateView);
 }
}

Изменить: MainActivity XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 

android_layout_width="match_parent"
android_layout_height="match_parent"
android_paddingBottom="@dimen/activity_vertical_margin"
android_paddingLeft="@dimen/activity_horizontal_margin"
android_paddingRight="@dimen/activity_horizontal_margin"
android_paddingTop="@dimen/activity_vertical_margin"
tools_context=".MainScreen"
android_background="#da5f02">
<ImageView
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_id="@+id/Picture"
    android_layout_alignParentStart="true"
    android_layout_alignParentEnd="true"
    android_background="#da5f02"
    android_src="@drawable/monalisa"
    android_adjustViewBounds="true"/>

</RelativeLayout>

3 ответа

  1. public class RateView extends View
    

    Добавьте это представление в действие / фрагмент
    В activity_main поставить

    <LinearLayout 
        android_layout_width="match_parent"
        android_layout_height="match_parent"
        android_orientation="vertical"
        android_gravity="center"
        >
         <ImageView
              android_layout_width="match_parent"
              android_layout_height="5dp"
              android_src="@drawable/image" />
    
                <com.yourpackage.RateView 
                    android_layout_width="wrap_content"
                    android_layout_height="0dp"
                    android_layout_weight="1"
                    android_gravity="center_horizontal" />
    </LinearLayout>
    

    добавить изображение здесь вид не может добавить изображение.

  2. Если вы будете пользовательский вид, то вы можете добавить только один фон для просмотра, так что вы должны изменить свой подход для выше достижения.

  3. <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
    
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    android_paddingBottom="@dimen/activity_vertical_margin"
    android_paddingLeft="@dimen/activity_horizontal_margin"
    android_paddingRight="@dimen/activity_horizontal_margin"
    android_paddingTop="@dimen/activity_vertical_margin"
    tools_context=".MainScreen"
    android_background="#da5f02">
    
     <com.yourpackage.RateView 
                    android_layout_width="wrap_content"
                    android_layout_height="0dp"
                    android_layout_weight="1"
                    android_gravity="center_horizontal" />
    
    
    <ImageView
        android_layout_width="match_parent"
        android_layout_height="wrap_content"
        android_id="@+id/Picture"
        android_layout_alignParentStart="true"
        android_layout_alignParentEnd="true"
        android_background="#da5f02"
        android_src="@drawable/monalisa"
        android_adjustViewBounds="true"/>
    
    </RelativeLayout>
    

    Пожалуйста, посмотрите на это

    главный экран открытого класса расширяет возможности AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View rateView = new RateView(this, null);
        setContentView(R.layout.activity_main);
     }
    }