2016-12-22 5 views
0

shape similar to this oneをイメージプレースホルダとして使用したいと考えています。私はイメージプレースホルダとして使用するために、Androidスタジオでカスタムの二次形状を描画するにはどうすればよいですか?

canvas.drawRect(0,0,500,250,paint); 

を使用して円や四角形を作る方法を学んだと私はここで閲覧した内容から、私はillustrated in this pageとしてパスを使用する必要があること集まりました。しかし、前にリンクしたパスのページを見るとどこから始めるのか分かりません。このカスタムシェイプは、画面の幅に合わせて作成するにはどうすればよいですか?前もって感謝します!私はこれをテストするためにcheesesquareデモを使用

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

    Paint paint = new Paint(); 
    paint.setColor(Color.parseColor("#CD5C5C")); 
    Bitmap bg = Bitmap.createBitmap(480,800, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bg); 
    canvas.drawRect(0,0,500,250,paint); 
    RelativeLayout rl = (RelativeLayout) 
    findViewById(R.id.activity_main); 
    rl.setBackgroundDrawable(new BitmapDrawable(bg)); 
} 
+0

画像が視差を動かしている場合は、エッジに視差を移動させますか? –

+0

実際に、視差を移動するエッジは奇妙に見えます。これは、進んでいるリストビューがそれを覆い始めるためです。 –

+0

視差の効果はかなり派手ですが、私はおそらく静的な画像に固執したいと思います。私は形をあまり経験していないだけで、私が投稿したようなカスタムシェイプを作る方法を研究しようとしています。 – Yoleaux

答えて

0

これは私が最終的に画像を挿入するために使用します赤い四角形を作成するために、これまでの私のコードです。

まず、三角形のカスタムビューから始めました。

backgroundという名前の色をcolors.xmlに追加する必要があります。または、リストの背景に設定した色を使用してください。

public class TriangleView extends View { 

    private Path mPath = new Path(); 

    private Paint mPaint = new Paint(); 


    public TriangleView(Context context) { 
     super(context); 
    } 

    public TriangleView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public TriangleView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @TargetApi(21) 
    public TriangleView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
    } 

    @Override 
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 
     super.onLayout(changed, left, top, right, bottom); 

     mPath.reset(); 
     mPath.moveTo(0,0); 
     mPath.lineTo(0, getHeight()); 
     mPath.lineTo(getWidth(), getHeight()); 
     mPath.close(); 

     int backgroundColor = getResources().getColor(R.color.background); 

     mPaint.setStyle(Paint.Style.FILL); 
     mPaint.setColor(backgroundColor); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawPath(mPath, mPaint); 
    } 
} 

ここではレイアウトにどのように取り組んだのですか。三角形は画像の下隅をカバーします。これは、レイアウトのちょうど崩壊ツールバー部分です:

 <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleMarginEnd="64dp"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       app:layout_collapseMode="none"> 

       <ImageView 
        android:id="@+id/backdrop" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:scaleType="centerCrop" /> 

       <com.example.fixme.TriangleView 
        android:layout_width="match_parent" 
        android:layout_height="48dp" 
        android:layout_gravity="bottom"/> 

      </FrameLayout> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:layout_collapseMode="pin" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 

限り、あなたは画像上のラスタースクロールを必要としないように、これは大丈夫動作しているようです。

関連する問題