1、需求

在项目开发过程中,打印小票前需要添加打印预览功能,交易数据在打印前转成bitmap然后直接打印,为了显示这个bitmap需要将其传给显示activity。

2、解决方法

把bitmap存储为byte数组,然后再通过Intent传递。

3、XML布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:andro/>
</LinearLayout>
</LinearLayout>


</LinearLayout>

如何在两个activity之间传递bitmap

 


4、生成bitmap

 

public class ReceiptPreviewTrans {

public Bitmap preview(TransData transData){
ReceiptGeneratorTrans receiptGeneratorTrans = new ReceiptGeneratorTrans(transData, 1, 1, false);
return receiptGeneratorTrans.generate();
}
}

 

5、ActionPrintPreview实现

public class ActionPrintPreview extends AAction {

private Context context;
private Handler handler;
private TransData transData;

public ActionPrintPreview(ActionStartListener listener) {
super(listener);
}

public void setParam(Context context, Handler handler, TransData transData) {
this.context = context;
this.handler = handler;
this.transData = transData;
}

@Override
protected void process() {
ReceiptPreviewTrans receiptPreviewTrans = new ReceiptPreviewTrans();
Bitmap bitmap = receiptPreviewTrans.preview(transData);
Intent intent = new Intent(context, PrintPreviewActivity.class);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte [] bitmapByte =baos.toByteArray();
intent.putExtra("bitmap", bitmapByte);
context.startActivity(intent);
}
}

 

6、PrintPreviewActivity实现

public class PrintPreviewActivity extends BaseActivityWithTickForAction implements View.OnClickListener{

private TextView headerText;
private ImageView backBtn;

private Bitmap bitmap;
private byte [] bis;
private ImageView imageView;
private Button btnCancel;
private Button btnPrint;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Device.enableStatusBar(false);
}

@Override
protected void onResume() {
super.onResume();
}

@Override
protected void loadParam() {
Intent intent=getIntent();
if(intent !=null)
{
bis=intent.getByteArrayExtra("bitmap");
bitmap= BitmapFactory.decodeByteArray(bis, 0, bis.length);
}
}

@Override
protected int getLayoutId() {
return R.layout.activity_print_preview_layout;
}

@Override
protected void initViews() {
headerText = (TextView) findViewById(R.id.header_title);
headerText.setText(R.string.preview);
backBtn = (ImageView) findViewById(R.id.header_back);
backBtn.setVisibility(View.GONE);

imageView = (ImageView)findViewById(R.id.printPreview);
imageView.setImageBitmap(bitmap);
btnCancel = (Button)findViewById(R.id.cancel_button);
btnPrint = (Button)findViewById(R.id.print_button);
}

@Override
protected void setListeners(){
btnCancel.setOnClickListener(this);
btnPrint.setOnClickListener(this);
}

@Override
public void onClick(View v) {

switch (v.getId()) {
case R.id.cancel_button:
break;
case R.id.print_button:
finish(new ActionResult(TransResult.SUCC, null));
break;
default:
break;
}

}

@Override
protected void handleMsg(Message msg) {

}

public void finish(ActionResult result) {
tickTimerStop();
AAction action = TransContext.getInstance().getCurrentAction();
if (action != null) {
action.setResult(new ActionResult(TransResult.SUCC, result.getData()));
} else {
finish();
}
}
}

 

7、效果图

 

 如何在两个activity之间传递bitmap

相关文章:

  • 2022-12-23
  • 2021-09-09
  • 2021-09-27
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-10
猜你喜欢
  • 2021-10-22
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-21
  • 2021-05-23
相关资源
相似解决方案