2

I'm making an app that will allow the user to add a photo to an imageview from the gallery of their phone which I have already been able to code successfully. I now want to be able to allow the user to add text on top of the photo and then save the text and image as one back into the gallery. Is there any way to do this?

XML:

  <LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ImageView android:id="@+id/image" android:layout_height="400dp" android:layout_width="fill_parent"/>
    <LinearLayout 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent" 
        android:orientation="horizontal">
        <Button 
            android:id="@+id/chooseimage" 
            android:layout_height="fill_parent" 
            android:layout_weight="1" 
            android:layout_width="fill_parent" 
            android:text="Choose Image"/>
        <Button 
            android:id="@+id/addtext" 
            android:layout_height="fill_parent" 
            android:layout_weight="1" 
            android:layout_width="fill_parent" 
            android:text="Add Text"/>
        <Button 
            android:id="@+id/save" 
            android:layout_height="fill_parent" 
            android:layout_weight="1" 
            android:layout_width="fill_parent" 
            android:text="Save"/>
    </LinearLayout>
</LinearLayout>  

Member.java

public class MemberActivity extends Activity implements OnClickListener {
    /**
     * Called when the activity is first created.
     */

    private static final int SELECT_IMAGE = 1;
    Button openGallery;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.design);
        openGallery = (Button) findViewById(R.id.chooseimage);
        openGallery.setOnClickListener(this);

    }

    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case R.id.chooseimage:
                Intent gallery = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                startActivityForResult(gallery, SELECT_IMAGE);
                break;
            default:
                break;
        }
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK && requestCode == SELECT_IMAGE) {
            Uri selectedImage = data.getData();
            String path = getPath(selectedImage);
            Bitmap bitmapImage = BitmapFactory.decodeFile(path);
            ImageView image = (ImageView) findViewById(R.id.image);
            image.setImageBitmap(bitmapImage);
        }
    }

    public String getPath(Uri uri) {
        String[] filePathColumn = {MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(uri, filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

        return cursor.getString(columnIndex);
    }
}
4

4 回答 4

3

是的,有办法做到这一点,

buildDrawingCache()您可以使用和创建任何视图的位图getDrawingCache()

TextView tv = (TextView)findViewById(R.id.textview);
tv.buildDrawingCache();
ImageView img = (ImageView)findViewById(R.id.imageview);
img.setImageBitmap(tv.getDrawingCache());

您还可以查看答案以供进一步参考。

于 2012-04-26T13:12:19.123 回答
1
于 2012-04-26T13:02:32.387 回答
0

您还可以使用 TextView 代替 ImageView 并将图像设置为 TextView 的背景。之后您还可以向 TextView 添加文本。将所有文本保存到某个地方并再次显示图库时再次使用您与图像一起保存的文本。

于 2012-04-26T14:18:31.500 回答
0

尝试这个:

 TextView tv1 = new TextView(this);
 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(80, 100);
    tv1.setLayoutParams(layoutParams);
    tv1.setText("testing 1 2 3");
    tv1.setTextColor(Color.BLACK);
    tv1.setBackgroundColor(Color.TRANSPARENT);

使用您的布局单击按钮添加到它 - >您的布局参考,然后

.addview(tv1);

于 2015-03-14T08:27:46.177 回答