我正在开展一个项目,我希望将屏幕划分为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;
}
它运作良好但是随着添加更多图像,合并变得越来越小。所以我想在屏幕上修改尺寸。
答案 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
会根据您的视图length
和width
调整图片。
如果您对此有疑问,请与我联系。