Android:在FragmentClass中绘画

时间:2014-04-22 06:22:44

标签: java android eclipse android-canvas paint

我在活动中使用导航栏。如果我点击导航栏中的任何项目 在默认情况下,它应该允许我们绘制一些东西。但是我试了很长时间,我无法做到。请尽快熟悉。下面是我正在使用的代码。

Painting.java

package com.example.painturselfnew;

import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class Painting extends Activity {
    private ListView mdrawerlist;
    private DrawerLayout mdrawerlayout;
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mdrawertitle;
    private CharSequence mtitle;
    private String[] mfragmenttitles;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_painting);
        mtitle = mdrawertitle = getTitle();
        mfragmenttitles = getResources().getStringArray(R.array.widgets);
        mdrawerlayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mdrawerlist = (ListView) findViewById(R.id.left_drawer);
        mdrawerlist.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mfragmenttitles));
        getActionBar().setDisplayShowHomeEnabled(true);
        getActionBar().setDisplayHomeAsUpEnabled(true);

        mdrawerlist.setOnItemClickListener(new DrawerItemClickListener());

        mDrawerToggle = new ActionBarDrawerToggle(this, mdrawerlayout,
                R.drawable.ic_launcher, R.string.drawer_open,
                R.string.drawer_close) {
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mtitle);
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mdrawertitle);
                invalidateOptionsMenu();
            }
        };
        mdrawerlayout.setDrawerListener(mDrawerToggle);
        if (savedInstanceState == null) {
            selectItem(0);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.painting, menu);
        return true;
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        boolean draweropen = mdrawerlayout.isDrawerOpen(mdrawerlist);
        menu.findItem(R.id.action_settings).setVisible(!draweropen);
        return super.onPrepareOptionsMenu(menu);

    }

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.action_settings:

            if (mdrawerlayout.isDrawerOpen(mdrawerlist)) {
                mdrawerlayout.closeDrawer(mdrawerlist);
            } else {
                mdrawerlayout.openDrawer(mdrawerlist);
            }

            mdrawerlayout.openDrawer(mdrawerlist);
            /*
             * Toast.makeText(getApplicationContext(), "Options Selected",
             * Toast.LENGTH_LONG).show();
             */

            return true;
        case android.R.id.home:
            startActivity(new Intent(Painting.this, MainActivity.class));
            break;
        default:
            return super.onOptionsItemSelected(item);
        }
        return true;
    }

    private class DrawerItemClickListener implements
            ListView.OnItemClickListener {
        public void onItemClick(AdapterView<?> parent, View v, int position,
                long id) {
            selectItem(position);
        }
    }

    private void selectItem(int position) {
        Fragment fragment = new Fragment();
        Bundle args = new Bundle();
        // args.putInt(Fragment.ARG_PLANET_NUMBER, position);
        fragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();

        switch (position) {

        case 0:
            fragment = new Fragment1();
            Toast.makeText(getApplicationContext(), "Camera Selected",
                    Toast.LENGTH_LONG).show();

            break;
        case 1:
            fragment = new Fragment2();
            Toast.makeText(getApplicationContext(), "Color Selected",
                    Toast.LENGTH_LONG).show();
            break;
        case 2:
            /*
             * PaintFragment fragment1; fragment1 = new PaintFragment();
             */
            PaintFragment fragment1 = new PaintFragment();
            Toast.makeText(getApplicationContext(), "Paint Selected",
                    Toast.LENGTH_LONG).show();
            break;
        case 3:
            fragment = new Fragment4();
            Toast.makeText(getApplicationContext(), "Save selected",
                    Toast.LENGTH_LONG).show();
            break;
        case 4:
             fragment = new Fragment5();
            Toast.makeText(getApplicationContext(), "Share Selected",
                    Toast.LENGTH_LONG).show();
            break;
        case 5:
            fragment = new Fragment6();
            Toast.makeText(getApplicationContext(), "ArtBy Selected",
                    Toast.LENGTH_LONG).show();
            break;
        case 6:
            fragment = new Fragment7();
            Toast.makeText(getApplicationContext(), "Refresh Selected",
                    Toast.LENGTH_LONG).show();
            break;

        }

        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();

        mdrawerlist.setItemChecked(position, true);
        setTitle(mfragmenttitles[position]);
        mdrawerlayout.closeDrawer(mdrawerlist);
    }

    @Override
    public void setTitle(CharSequence title) {
        mtitle = title;
        getActionBar().setTitle(mtitle);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

}

PainitngFragment.java

package com.example.painturselfnew;

import android.annotation.TargetApi;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class PaintFragment extends Activity {

    /*private static int displayWidth = 0;
    private static int displayHeight = 0;
*/
    /*
     * @Override public void onCreate(Bundle savedInstanceState) {
     * super.onCreate(savedInstanceState);
     * //setContentView(R.layout.activity_fragment3); //setContentView(new
     * MyView(this));
     * 
     * 
     * }
     */

    /*public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {*/

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            BrushView view=new BrushView(this);
            setContentView(view);
            addContentView(view.btnEraseAll, view.params);


        /*
         * View view = inflater.inflate(R.layout.activity_fragment3, container,
         * false);
         */
        // getActivity();

        /*
         * Display display =
         * ((WindowManager)this.getSystemService(Context.WINDOW_SERVICE
         * )).getDefaultDisplay(); displayWidth = display.getWidth();
         * displayHeight = display.getHeight();
         */


        //ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
        /*
         * iv.setOnClickListener(new View.OnClickListener() {
         * 
         * @Override public void onClick(View arg0) { // TO DO Auto-generated
         * method stub
         * 
         * BrushView view = new BrushView(getActivity()); //setContentView(new
         * BrushView(this)); } });
         */

        //return view;
    }

    @Override
    protected void onPause() {
        super.onPause();
        finish();
    }

    public class BrushView extends View {
        private Paint brush = new Paint();
        private Path path = new Path();
        public Button btnEraseAll;
        public LayoutParams params;

        public BrushView(Context paintFragment) {
            super(paintFragment);
            brush.setAntiAlias(true);
            brush.setColor(Color.BLUE);
            brush.setStyle(Paint.Style.STROKE);
            brush.setStrokeJoin(Paint.Join.ROUND);
            brush.setStrokeWidth(15f);

            btnEraseAll = new Button(paintFragment);
            btnEraseAll.setText("Erase Everything!!");
            params = new LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.WRAP_CONTENT);
            btnEraseAll.setLayoutParams(params);
            btnEraseAll.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    // reset the path
                    path.reset();
                    // invalidate the view
                    postInvalidate();

                }
            });
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            float pointX = event.getX();
            float pointY = event.getY();

            // Checks for the event that occurs
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(pointX, pointY);

                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(pointX, pointY);
                break;
            case MotionEvent.ACTION_UP:
                break;
            default:
                return false;
            }
            // Force a view to draw.
            postInvalidate();
            return false;

        }

        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawPath(path, brush);
        }

    }
}

提前致谢...

0 个答案:

没有答案