【问题标题】:Table layout to bitmap表格布局到位图
【发布时间】:2014-03-11 11:00:20
【问题描述】:

我在TableLayout 中有一个表格,表格是从我的数据库中填写的,我想通过电子邮件发送表格输出。但是我在将表格布局转换为位图时遇到问题。这是我正在进行的最后一项活动

public class SendEmail extends Activity  {


    Button buttonSend;
    TableLayout tableMessage;
    Intent emailFinal;
     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.sendemail);

             String Orderdate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

             String email = pdatabase.getPEmail();
             emailFinal = new Intent(Intent.ACTION_SEND);   
             emailFinal.putExtra(Intent.EXTRA_EMAIL, new String[]{ email});

buttonSend =(Button) findViewById(R.id.sendEmail);

tableMessage = (TableLayout) findViewById(R.id.tableLayout1);

                buttonSend.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                    Bitmap b = Bitmap.createBitmap( tableMessage.getWidth(),
                            tableMessage.getHeight(),
                               Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            tableMessage.draw(c);
            BitmapDrawable d = new BitmapDrawable(getResources(), b)    
                        emailFinal.putExtra(Intent.EXTRA_TEXT, b);          
                        emailFinal.setType("message/rfc822");
                        startActivity(Intent.createChooser(emailFinal, "Choose an Email client :"));
                    }

【问题讨论】:

  • 请发布位图转换代码。
  • 我已经编辑了我的代码
  • 你有什么异常吗?

标签: android tablelayout


【解决方案1】:

你可以简单地使用它。

public void sendMyData(View v){

 Bitmap cs = null;
 tableMessage.setDrawingCacheEnabled(true);
 tableMessage.buildDrawingCache(true);
 cs = Bitmap.createBitmap(tableMessage.getDrawingCache());
 Canvas canvas = new Canvas(cs);
 tableMessage.draw(canvas);
 canvas.save();
 tableMessage.setDrawingCacheEnabled(false);
 String path = Images.Media.insertImage(getContentResolver(), cs,
                "MyTableOutput", null);
 Uri uri = Uri.parse(path);
 Intent sharingIntent = new Intent(Intent.ACTION_SEND);
 sharingIntent.setType("image/png");
 sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
 startActivity(Intent.createChooser(sharingIntent,
                    "Share image using"));

}

现在在你的 xml 文件中为你的 Button 设置这个。

android:onClick = "sendMyData"

也为清单文件添加权限。

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

【讨论】:

  • 谢谢!!它的工作原理...一个问题,为什么位图图像输出为黑色?
  • @user3395725 表示您的图像在黑屏中?
  • 可以在xml文件中设置或者因为主题。从这个答案中你得到了正确的输出吗?
【解决方案2】:

试试这个。

tableMessage.setDrawingCacheEnabled(true);      
    tableMessage.layout(0, 0, tableMessage.getWidth(), tableMessage.getHeight());
    tableMessage.buildDrawingCache(true);
    Bitmap b = Bitmap.createBitmap(tableMessage.getDrawingCache());
    tableMessage.setDrawingCacheEnabled(false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多