将屏幕分成相等的部分

时间:2017-11-25 08:17:10

标签: android

我正在开展一个项目,我希望将屏幕划分为3个相等的部分,以便我可以在每个部分放置适合单个图像的合并图像。所以我不用担心图像的大小。

非常感谢您在这件事上的时间和帮助。

主要活动

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private ImageView img;

ArrayList<Bitmap> listBmp;

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    img=(ImageView) findViewById(R.id.img);
}

public void btnClick(View v){

 listBmp=new ArrayList<Bitmap>();


listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.images));

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img1))     

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img2));      

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img3));      

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img4));    

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img4));   

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img4));     

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img4))     

listBmp.add(BitmapFactory.decodeResource(getResources(),R.drawable.img4));

    Bitmap mergedImg= combineImageIntoOne(listBmp);

    img.setImageBitmap(mergedImg);

}

private Bitmap combineImageIntoOne(ArrayList<Bitmap> bitmap) {

    int w = 0, h = 0;

    for (int i = 0; i < bitmap.size(); i++) {

        if (i < bitmap.size() - 1) {

            w = bitmap.get(i).getWidth() > bitmap.get(i + 1).getWidth() ?bitmap.get(i).getWidth() : bitmap.get(i + 1).getWidth();

        }

        h += bitmap.get(i).getHeight();

    }


    Bitmap temp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(temp);

    int top = 0;


    for (int i = 0; i < bitmap.size(); i++) {

        Log.d("HTML", "Combine: "+i+"/"+bitmap.size()+1);


        top = (i == 0 ? 0 : top+bitmap.get(i).getHeight());

        canvas.drawBitmap(bitmap.get(i), 0f, top, null);

    }
    return temp;


}

它运作良好但是随着添加更多图像,合并变得越来越小。所以我想在屏幕上修改尺寸。

2 个答案:

答案 0 :(得分:0)

在布局文件中的线性布局下设置imageview权重。

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content
android:layout_weight="3">
<ImageView 
android:layout_width="match_parent"
android:layout_height="match_parent
android:layout_weight="1"
/>
<ImageView 
android:layout_width="match_parent"
android:layout_height="match_parent
android:layout_weight="1"
/>
<ImageView 
android:layout_width="match_parent"
android:layout_height="match_parent
android:layout_weight="1"
/>
</LinearLayout>

答案 1 :(得分:0)

那么你的问题在这里还不够清楚。但我认为您正在尝试垂直设置单个布局活动中的3个图像。你可以尝试如下

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"/>
        <ImageView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:src="@drawable/your_img1"
                        android:scaleType="fitXY"
                        android:layout_weight="2"/>
        <ImageView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:src="@drawable/your_img2"
                        android:scaleType="fitXY"                            
                        android:layout_weight="2"/>
        <ImageView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:src="@drawable/your_img3"
                        android:scaleType="fitXY"
                        android:layout_weight="2"/>
</LinearLayout>

android:scaleType="fitXY"会调整大小。 scaleType会根据您的视图lengthwidth调整图片。

如果您对此有疑问,请与我联系。