刷卡ListView项详细的活动向左或向右的Andr​​oid滑动查看 [英] Swipe listview item detailed activity left or right to slide view in android

查看:119
本文介绍了刷卡ListView项详细的活动向左或向右的Andr​​oid滑动查看的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列表视图,当我在列表视图中点击任何项目的详细活动将open.This布局有许多像小部件TextView的,ImageView的,共享按钮等。现在我想滑项目的这个细节活动,以显示列表中的下一个项目的详细信息视图。我下面这个 http://misha.beshkin.lv/android-swipe-gesture-执行/ 但是当我从左至右下一个视图不显示刚开举杯消息向右滑动,刷卡。任何一个可以告诉我如何在这方面的工作?我是新来的Andr​​oid答案将AP preciated。以下是code我已经使用

MainActivity.java(列表视图页)

 公共类MainActivity扩展ListActivity {ArrayList的<&HashMap的LT;字符串,字符串>> songsList;
ListView控件列表;
LazyAdapter适配器;
JSONArray职位;
//所有静态变量
静态最终字符串URL =HTTP:// SITEURL /职位/页;静态最后弦乐KEY_URL_FOR_MAP =url_site;
 静态最后弦乐KEY_POSTS =上岗;
 静态最后弦乐KEY_ID =ID;
静态最后弦乐KEY_TITLE =称号;
静态最后弦乐KEY_SITEURL =URL;
静态最后弦乐KEY_DATE =日期;
静态最后弦乐KEY_CONTENT =内容;
静态最后弦乐KEY_AUTHOR =作者;
静态最后弦乐KEY_NAME =名;
静态最后弦乐KEY_ATTACHMENTS =附件;
静态最后弦乐KEY_SLUG =塞;
静态最后弦乐KEY_THUMB_URL =缩略图;
静态最后弦乐KEY_IMAGES =图像;
静态最后弦乐KEY_URL =URL;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
  最终的ArrayList<&HashMap的LT;字符串,字符串>> songsList =新的ArrayList<&HashMap的LT;字符串,字符串>>();
        //创建JSON解析器实例
                最后JSONParser jParser =新JSONParser();                // URL从获取JSON字符串
                JSONObject的JSON = jParser.getJSONFromUrl(URL);
                尝试{
                      帖= json.getJSONArray(KEY_POSTS);        //遍历所有歌曲节点&LT循环;宋>
                的for(int i = 0; I< posts.length();我++){
                    JSONObject的C = posts.getJSONObject(I)
                    //存储在变量中的每个JSON项目
                    字符串ID = c.getString(KEY_ID);
                    字符串title = c.getString(KEY_TITLE);
                    字符串SITEURL = c.getString(KEY_SITEURL);
                    字符串日期= c.getString(KEY_DATE);
                    字符串内容= c.getString(KEY_CONTENT);
                    //删除所有< P> &所述; / P>和< BR />而代之以
                     含量= content.replace(&所述峰; br />中,);
                     含量= content.replace(&所述; P>中,);
                     含量= content.replace(&下; / P>中,);                    // authornumber是阿恩JSON对象
                    笔者的JSONObject = c.getJSONObject(KEY_AUTHOR);
                    字符串名称= author.getString(KEY_NAME);                    字符串URL = NULL;
                    字符串蛞蝓= NULL;
                    尝试{
                    JSONArray阿塔= c.getJSONArray(附件);
                    对于(INT J = 0; J< atta.length(); J ++){
                        JSONObject的D = atta.getJSONObject(J);                        蛞蝓= d.getString(KEY_SLUG);                        JSONObject的图像= d.getJSONObject(KEY_IMAGES);                        JSONObject的缩略图= images.getJSONObject(KEY_THUMB_URL);
                        URL = thumbnail.getString(KEY_URL);                    }
                    }赶上(例外五){
                        e.printStackTrace();                    }
            //创建新的HashMap
            HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();            //将每个子节点的HashMap键=>值
            map.put(KEY_ID,身份证);
            map.put(KEY_TITLE,职称);
            map.put(KEY_URL_FOR_MAP,主页);
            map.put(KEY_DATE,日期);
            map.put(KEY_NAME,名);
            map.put(KEY_CONTENT,内容);
            map.put(KEY_SLUG,蛞蝓);
            map.put(KEY_URL,URL);            //添加HashList到ArrayList的
            songsList.add(地图);
                }
                }赶上(JSONException E){
                    e.printStackTrace();                    }         最终的ListView列表=(ListView控件)findViewById(android.R.id.list);         //通过传递JSON数据的ArrayList获取适配器
            适配器=新LazyAdapter(这一点,songsList);
             list.setAdapter(适配器);    //在选择单列表项启动新画面
    list.setOnItemClickListener(新OnItemClickListener(){        公共无效onItemClick(适配器视图<>母公司,观景,
                INT位置,长的id){
            HashMap的<字符串,字符串>地图= songsList.get(位置);            在意向=新意图(MainActivity.this,SampleDesp.class);
            in.putExtra(KEY_TITLE,map.get(KEY_TITLE));
            in.putExtra(KEY_URL_FOR_MAP,map.get(KEY_URL_FOR_MAP));
            in.putExtra(KEY_DATE,map.get(KEY_DATE));
            in.putExtra(KEY_NAME,map.get(KEY_NAME));
            in.putExtra(KEY_CONTENT,map.get(KEY_CONTENT));
            in.putExtra(KEY_URL,map.get(KEY_URL));            startActivity(在);
        }
    }); }
   }

SampleDesp.java(详细的活动)

 公共类SampleDesp扩展活动实现SimpleGestureListener {
  私人SimpleGestureFilter检测器; 静态字符串称号;
 字符串内容;
    // Facebook应用程序ID
    私人静态字符串APP_ID =308180782571605; //你的应用程序ID替换    // Facebook的类的实例
    私人使用Facebook =新的Facebook(APP_ID);
    私人AsyncFacebookRunner mAsyncRunner;
    字符串文件名=AndroidSSO_data;
    私人共享preferences米preFS;    按钮btnFbLogin;
    按钮btnPostToWall;    // JSON节点键
    静态最后弦乐KEY_URL_FOR_MAP =url_site;
    私有静态最后弦乐KEY_TITLE =称号;
    私有静态最后弦乐KEY_SITEURL =URL;
    私有静态最后弦乐KEY_DATE =日期;
    私有静态最后弦乐KEY_NAME =名;
    私有静态最后弦乐KEY_CONTENT =内容;
    私有静态最后弦乐KEY_URL =URL;
     静态最后弦乐KEY_SLUG1 =塞;
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.sampledes);
        探测器=新SimpleGestureFilter(这一点,这一点);        最终的LinearLayout行1 =(的LinearLayout)findViewById(R.id.ll1);
        2号线的LinearLayout =(的LinearLayout)findViewById(R.id.ll2);        按钮btnShare =(按钮)findViewById(R.id.share);        btnShare.setOnClickListener(新OnClickListener(){      公共无效的onClick(视图v){
        // TODO自动生成方法存根
      line1.setVisibility(View.VISIBLE);      }
    });
        //获取数据的意图
        在意向= getIntent();
        最后弦乐为url1 = in.getStringExtra(KEY_URL);        ImageView的imgv =(ImageView的)findViewById(R.id.imgdesc);
        ImageLoader的ImageLoader的=新ImageLoader的(getApplicationContext());
        imageLoader.DisplayImage(URL1,imgv);        //从previous意图JSON值        最后弦乐标题= in.getStringExtra(KEY_TITLE);
        最后弦乐SITEURL = in.getStringExtra(KEY_URL_FOR_MAP);
        字符串日期= in.getStringExtra(KEY_DATE);
        字符串名称= in.getStringExtra(KEY_NAME);
        最终字符串内容= in.getStringExtra(KEY_CONTENT);        //在屏幕上显示的所有值
        TextView的lblName =(的TextView)findViewById(R.id.name_label);
        TextView的lblUrl =(的TextView)findViewById(R.id.url_label);        TextView的lblCost =(的TextView)findViewById(R.id.email_label);
        TextView的lblDesc =(的TextView)findViewById(R.id.mobile_label);
        TextView的lblCont =(的TextView)findViewById(R.id.content_label);        lblName.setText(职称);
        lblUrl.setText(SITEURL);
        lblCost.setText(日期);
        lblDesc.setText(名);
        lblCont.setText(内容);        最后ImageView的EMAIL3 =(ImageView的)findViewById(R.id.email);
       email3.setOnClickListener(新View.OnClickListener(){
          公共无效的onClick(视图v){
              //我的codeS
           意向意图=新意图(Intent.ACTION_VIEW);
           乌里数据= Uri.parse(?至mailto:主题=+标题+&放大器;身体=+内容);
           intent.setData(数据);
           startActivity(意向);
          }        });
         最后ImageView的SMS4 =(ImageView的)findViewById(R.id.sms);
            sms4.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(视图v){
               //执行上的点击动作                意图shareIntent =新意图(Intent.ACTION_SEND);
                shareIntent.setData(Uri.parse(Uri.en code(职称)+ Uri.en code(内容)));                shareIntent.setType(文/ *);
                shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,内容);
                startActivity(shareIntent);
            }
         });            最后ImageView的twitter4 =(ImageView的)findViewById(R.id.twitter);
            twitter4.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(视图v){
               //执行上的点击动作
               意图I =新意图(Intent.ACTION_VIEW);
               i.setData(Uri.parse(http://twitter.com/?status=+ Uri.en code(职称)++ Uri.en code(SITEURL)));
               startActivity(ⅰ);            }
         });            按钮btnFbLogin =(按钮)findViewById(R.id.btn_fblogin);
            btnFbLogin.setOnClickListener(新View.OnClickListener(){                @覆盖
                公共无效的onClick(视图v){
                    Log.d(图像按钮,单击按钮);
                    loginToFacebook();
                    如果(facebook.isSessionValid()){
                        postToWall();
                    }
                }
            });
    }
     @覆盖
        公共布尔dispatchTouchEvent(MotionEvent我){
          this.detector.onTouchEvent(箱);
         返回super.dispatchTouchEvent(箱);
        }
    公共无效onSwipe(INT方向){
      字符串str =;      开关(方向){      案例SimpleGestureFilter.SWIPE_RIGHT:海峡=刷卡右;
                                                      打破;
      案例SimpleGestureFilter.SWIPE_LEFT:海峡=向左滑动
                                                     打破;
      案例SimpleGestureFilter.SWIPE_DOWN:海峡=向下滑动
                                                     打破;
      案例SimpleGestureFilter.SWIPE_UP:海峡=刷卡向上;
                                                     打破;      }
       Toast.makeText(这一点,STR,Toast.LENGTH_SHORT).show();
     }     公共无效onDoubleTap(){
        Toast.makeText(这一点,枪王,Toast.LENGTH_SHORT).show();
     }
                / **
                 *功能登录到Facebook的
                 * * /                私人无效loginToFacebook(){
                    // TODO自动生成方法存根
                     {                    米preFS = GET preferences(MODE_PRIVATE);
                    字符串的access_token = M prefs.getString(的access_token,NULL);
                    长到期= M prefs.getLong(access_expires,0);                    如果(ACCESS_TOKEN!= NULL){
                        facebook.setAccessToken(的access_token);                        Log.d(FB会话,+ facebook.isSessionValid());
                    }                    如果(到期!= 0){
                        facebook.setAccessExpires(到期);
                    }                    如果(!facebook.isSessionValid()){
                        facebook.authorize(这一点,
                                新的String [] {电子邮件,publish_stream},
                                新DialogListener(){                                    @覆盖
                                    公共无效onCancel(){
                                        //函数来处理事件取消
                                    }                                    @覆盖
                                    公共无效的onComplete(束值){
                                        //函数来处理完成事件
                                        //编辑preferences和更新Facebook的acess_token
                                        共享preferences.Editor编辑= M prefs.edit();
                                        editor.putString(的access_token
                                                facebook.getAccessToken());
                                        editor.putLong(access_expires
                                                facebook.getAccessExpires());
                                        editor.commit();                                                                                }                                    @覆盖
                                    公共无效onerror的(DialogError错误){
                                        //函数来处理错误                                    }                                    @覆盖
                                    公共无效onFacebookError(FacebookError fberror){
                                        //函数来处理Facebook的错误                                    }                                });                     }其他{}
                     }
                     }
                    / **
                     *功能张贴到Facebook涂鸦墙
                     * * /
                    公共无效postToWall(){
                         捆绑参数=新包();
                    parameters.putString(称号,光临);
                        parameters.putString(链接,http://india.dollardesi.net/ads/metro-logistic-packers-movers/);                        //后用户的墙上。
                        facebook.dialog(这一点,饲料,参数,新DialogListener(){                            @覆盖
                            公共无效onFacebookError(FacebookError E){
                            }                            @覆盖
                            公共无效onerror的(DialogError E){
                            }                            @覆盖
                            公共无效的onComplete(束值){
                            }                            @覆盖
                            公共无效onCancel(){
                            }                        });                    }                    / **
                     *功能,以从Facebook注销用户
                     * * /
                    公共无效logoutFromFacebook(){
                        mAsyncRunner.logout(这一点,新RequestListener(){
                            @覆盖
                            公共无效的onComplete(字符串响应,对象的状态){
                                Log.d(注销从Facebook,响应);
                                如果(Boolean.parseBoolean(响应)==真){
                                    runOnUiThread(新的Runnable(){                                        @覆盖
                                        公共无效的run(){
                                            //使登录按钮可见
                                            btnFbLogin.setVisibility(View.VISIBLE);
                                        }                                    });                                }
                            }                            @覆盖
                            公共无效onIOException(IOException异常即对象的状态){
                            }                            @覆盖
                            公共无效onFileNotFoundException(FileNotFoundException异常E,
                                    对象的状态){
                            }                            @覆盖
                            公共无效onMalformedURLException(MalformedURLException的E,
                                    对象的状态){
                            }                            @覆盖
                            公共无效onFacebookError(FacebookError即对象的状态){
                            }                        });
                    }                     }

SimpleGestureFilter.java

 公共类SimpleGestureFilter扩展SimpleOnGestureListener { 公众最终静态INT SWIPE_UP = 1;
 公众最终静态INT SWIPE_DOWN = 2;
 公众最终静态INT SWIPE_LEFT = 3;
 公众最终静态INT SWIPE_RIGHT = 4; 公众最终静态INT MODE_TRANSPARENT = 0;
 公众最终静态INT MODE_SOLID = 1;
 公众最终静态INT MODE_DYNAMIC = 2; 私人最终静态INT ACTION_FAKE = -13; //只是一个不可能的数字
 私人INT swipe_Min_Distance = 100;
 私人INT swipe_Max_Distance = 350;
 私人INT swipe_Min_Velocity = 100; 私人INT模式= MODE_DYNAMIC;
 私人布尔运行= TRUE;
 私人布尔tapIndicator = FALSE; 私人活动范围内;
 私人GestureDetector检测器;
 私人SimpleGestureListener侦听器;
 公共SimpleGestureFilter(Activity上下文,SimpleGestureListener SGL){  this.context =背景;
  this.detector =新GestureDetector(上下文,本);
  this.listener = SGL;
 } 公共无效onTouchEvent(MotionEvent事件){   如果(!this.running)
  返回;   布尔结果= this.detector.onTouchEvent(事件);   如果(this.mode == MODE_SOLID)
    event.setAction(MotionEvent.ACTION_CANCEL);
   否则,如果(this.mode == MODE_DYNAMIC){     如果(event.getAction()== ACTION_FAKE)
       event.setAction(MotionEvent.ACTION_UP);
     否则,如果(结果)
       event.setAction(MotionEvent.ACTION_CANCEL);
     否则,如果(this.tapIndicator){
      event.setAction(MotionEvent.ACTION_DOWN);
      this.tapIndicator = FALSE;
     }   }
   //否则只是做什么,它是透明的
 } 公共无效setMode(INT米){
  this.mode =米;
 } 公众诠释获取模式(){
  返回this.mode;
 } 公共无效的setEnabled(布尔状态){
  this.running =状态;
 } 公共无效setSwipeMaxDistance(INT距离){
  this.swipe_Max_Distance =距离;
 } 公共无效setSwipeMinDistance(INT距离){
  this.swipe_Min_Distance =距离;
 } 公共无效setSwipeMinVelocity(INT距离){
  this.swipe_Min_Velocity =距离;
 } 公众诠释getSwipeMaxDistance(){
  返回this.swipe_Max_Distance;
 } 公众诠释getSwipeMinDistance(){
  返回this.swipe_Min_Distance;
 } 公众诠释getSwipeMinVelocity(){
  返回this.swipe_Min_Velocity;
 }
 @覆盖
 公共布尔onFling(MotionEvent E1,E2 MotionEvent,浮velocityX,
   浮动velocityY){  最终浮动xDistance = Math.abs(e1.getX() - e2.getX());
  最终浮动yDistance = Math.abs(e1.getY() - e2.getY());  如果(xDistance> this.swipe_Max_Distance || yDistance> this.swipe_Max_Distance)
   返回false;  velocityX = Math.abs(velocityX);
  velocityY = Math.abs(velocityY);
        布尔结果= FALSE;  如果(velocityX> this.swipe_Min_Velocity和放大器;&安培; xDistance> this.swipe_Min_Distance){
   如果(e1.getX()> e2.getX())//从右到左
    this.listener.onSwipe(SWIPE_LEFT);
   其他
    this.listener.onSwipe(SWIPE_RIGHT);   结果=真;
  }
  否则,如果(velocityY> this.swipe_Min_Velocity和放大器;&安培; yDistance> this.swipe_Min_Distance){
   如果(e1.getY()> e2.getY())//自下而上
    this.listener.onSwipe(SWIPE_UP);
   其他
    this.listener.onSwipe(SWIPE_DOWN);   结果=真;
  }   返回结果;
 } @覆盖
 公共布尔onSingleTapUp(MotionEvent五){
  this.tapIndicator = TRUE;
  返回false;
 } @覆盖
 公共布尔onDoubleTap(MotionEvent为arg0){
  this.listener.onDoubleTap();;
  返回true;
 } @覆盖
 公共布尔onDoubleTapEvent(MotionEvent为arg0){
  返回true;
 } @覆盖
 公共布尔onSingleTapConfirmed(MotionEvent为arg0){  如果(this.mode == MODE_DYNAMIC){//我们欠的ACTION_UP,所以我们假的
     arg0.setAction(ACTION_FAKE); //动作稍后将转换为ACTION_UP。
     this.context.dispatchTouchEvent(为arg0);
  }  返回false;
 }
    静态接口SimpleGestureListener {
     无效onSwipe(INT方向);
     无效onDoubleTap();
 }}


解决方案

改变

 情况下SimpleGestureFilter.SWIPE_LEFT:海峡=向左滑动
     打破;

 情况下SimpleGestureFilter.SWIPE_LEFT:海峡=向左滑动
         //火意图您的详细活动在这里
         打破;

我希望我靠近你的解决方案。

I have a listview, when i click on any item in listview a detailed activity will open.This layout has many widgets like textview, ImageView, share buttons etc. Now I want to slide this detail activity of the item to show the detail view of next item in the list. I am following this http://misha.beshkin.lv/android-swipe-gesture-implementation/ but when i swipe from left to right next view is not displaying just getting a toast message "swipe right". Can any one direct me how to work on this? i am new to android Answers will be appreciated. Following is the code i have used

MainActivity.java(listview page)

public class MainActivity extends ListActivity  {

ArrayList<HashMap<String, String>> songsList;
ListView list;
LazyAdapter adapter;
JSONArray posts;


// All static variables
static final String URL = "http://siteurl/posts/pages";

static final String KEY_URL_FOR_MAP = "url_site"; 
 static final String KEY_POSTS = "posts";
 static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_SITEURL = "url";
static final String KEY_DATE = "date";
static final String KEY_CONTENT = "content";
static final String KEY_AUTHOR = "author";
static final String KEY_NAME = "name";
static final String KEY_ATTACHMENTS = "attachments";
static final String KEY_SLUG = "slug";
static final String KEY_THUMB_URL = "thumbnail";
static final String KEY_IMAGES = "images";
static final String KEY_URL = "url";



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


  final  ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();


        // Creating JSON Parser instance
                final JSONParser jParser = new JSONParser();

                // getting JSON string from URL
                JSONObject json = jParser.getJSONFromUrl(URL);
                try {
                      posts = json.getJSONArray(KEY_POSTS);

        // looping through all song nodes <song>
                for(int i = 0; i < posts.length(); i++){
                    JSONObject c = posts.getJSONObject(i);
                    // Storing each json item in variable
                    String id = c.getString(KEY_ID);
                    String title = c.getString(KEY_TITLE);
                    String siteurl = c.getString(KEY_SITEURL);
                    String date = c.getString(KEY_DATE);
                    String content = c.getString(KEY_CONTENT);
                    // to remove all <P> </p> and <br /> and replace with ""
                     content = content.replace("<br />", "");
                     content = content.replace("<p>", "");
                     content = content.replace("</p>", "");

                    //authornumber is agin  JSON Object
                    JSONObject author = c.getJSONObject(KEY_AUTHOR);
                    String name = author.getString(KEY_NAME);

                    String url = null;
                    String slug = null;
                    try {
                    JSONArray atta = c.getJSONArray("attachments");
                    for(int j = 0; j < atta.length(); j++){
                        JSONObject d = atta.getJSONObject(j);

                        slug = d.getString(KEY_SLUG);

                        JSONObject images = d.getJSONObject(KEY_IMAGES);

                        JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL);
                        url = thumbnail.getString(KEY_URL);

                    }
                    } catch (Exception e) {
                        e.printStackTrace();

                    }




            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value
            map.put(KEY_ID, id);
            map.put(KEY_TITLE, title);
            map.put(KEY_URL_FOR_MAP, siteurl);
            map.put(KEY_DATE, date);
            map.put(KEY_NAME, name);
            map.put(KEY_CONTENT, content);
            map.put(KEY_SLUG, slug);
            map.put(KEY_URL, url);



            // adding HashList to ArrayList
            songsList.add(map);
                }   
                }catch (JSONException e) {
                    e.printStackTrace();

                    }



         final ListView  list=(ListView)findViewById(android.R.id.list);

         // Getting adapter by passing json data ArrayList
            adapter=new LazyAdapter(this, songsList);    
             list.setAdapter(adapter);



    // Launching new screen on Selecting Single ListItem
    list.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            HashMap<String, String> map = songsList.get(position);

            Intent in = new Intent(MainActivity.this, SampleDesp.class);
            in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
            in.putExtra(KEY_URL_FOR_MAP, map.get(KEY_URL_FOR_MAP));
            in.putExtra(KEY_DATE, map.get(KEY_DATE));                         
            in.putExtra(KEY_NAME, map.get(KEY_NAME));
            in.putExtra(KEY_CONTENT, map.get(KEY_CONTENT));
            in.putExtra(KEY_URL, map.get(KEY_URL));

            startActivity(in);
        }


    });   

 }
   }

SampleDesp.java(detailed Activity)

public class SampleDesp extends Activity implements SimpleGestureListener {
  private SimpleGestureFilter detector;

 static String title;
 String content; 


    // Your Facebook APP ID
    private static String APP_ID = "308180782571605"; // Replace with your App ID

    // Instance of Facebook Class
    private Facebook facebook = new Facebook(APP_ID);
    private AsyncFacebookRunner mAsyncRunner;
    String FILENAME = "AndroidSSO_data";
    private SharedPreferences mPrefs;

    Button btnFbLogin;
    Button btnPostToWall;

    // JSON node keys
    static final String KEY_URL_FOR_MAP = "url_site"; 
    private static final String KEY_TITLE = "title";
    private static final String KEY_SITEURL = "url";
    private static final String KEY_DATE = "date";
    private static final String KEY_NAME = "name";
    private static final String KEY_CONTENT = "content";
    private static final String KEY_URL = "url";
     static final String KEY_SLUG1= "slug";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sampledes);
        detector = new SimpleGestureFilter(this,this);

        final LinearLayout line1 = (LinearLayout)findViewById(R.id.ll1);
        LinearLayout line2 = (LinearLayout)findViewById(R.id.ll2);

        Button btnShare = (Button)findViewById(R.id.share);

        btnShare.setOnClickListener(new OnClickListener() {

      public void onClick(View v) {
        // TODO Auto-generated method stub
      line1.setVisibility(View.VISIBLE);

      }
    });
        // getting intent data
        Intent in = getIntent();
        final String url1 = in.getStringExtra(KEY_URL);

        ImageView imgv = (ImageView) findViewById(R.id.imgdesc);
        ImageLoader imageLoader = new ImageLoader(getApplicationContext());
        imageLoader.DisplayImage(url1, imgv);





        // Get JSON values from previous intent

        final String title = in.getStringExtra(KEY_TITLE);
        final String siteurl = in.getStringExtra(KEY_URL_FOR_MAP);
        String date = in.getStringExtra(KEY_DATE);
        String name = in.getStringExtra(KEY_NAME);
        final String content = in.getStringExtra(KEY_CONTENT);

        // Displaying all values on the screen
        TextView lblName = (TextView) findViewById(R.id.name_label);
        TextView lblUrl = (TextView) findViewById(R.id.url_label);

        TextView lblCost = (TextView) findViewById(R.id.email_label);
        TextView lblDesc = (TextView) findViewById(R.id.mobile_label);
        TextView lblCont = (TextView) findViewById(R.id.content_label);

        lblName.setText(title);
        lblUrl.setText(siteurl);
        lblCost.setText(date);
        lblDesc.setText(name);
        lblCont.setText(content);



        final ImageView email3 = (ImageView) findViewById(R.id.email);


       email3.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v){
              //my codes
           Intent intent = new Intent(Intent.ACTION_VIEW);
           Uri data = Uri.parse("mailto:?subject=" + title + "&body=" + content);
           intent.setData(data);
           startActivity(intent);
          }

        });


         final ImageView sms4 = (ImageView) findViewById(R.id.sms);
            sms4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v){
               // Perform action on click

                Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setData(Uri.parse(Uri.encode(title)+Uri.encode(content))); 

                shareIntent.setType("text/*");
                shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, content);           
                startActivity(shareIntent);
            }
         });

            final ImageView twitter4 = (ImageView) findViewById(R.id.twitter);
            twitter4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v){
               // Perform action on click
               Intent i = new Intent(Intent.ACTION_VIEW);
               i.setData(Uri.parse("http://twitter.com/?status=" + Uri.encode(title) + "" + Uri.encode(siteurl)));
               startActivity(i);

            }
         });

            Button btnFbLogin = (Button) findViewById(R.id.btn_fblogin);
            btnFbLogin.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Log.d("Image Button", "button Clicked");
                    loginToFacebook();
                    if (facebook.isSessionValid()) {
                        postToWall();
                    }
                }


            });
    }
     @Override 
        public boolean dispatchTouchEvent(MotionEvent me){ 
          this.detector.onTouchEvent(me);
         return super.dispatchTouchEvent(me); 
        }
    public void onSwipe(int direction) {
      String str = "";

      switch (direction) {

      case SimpleGestureFilter.SWIPE_RIGHT : str = "Swipe Right";
                                                      break;
      case SimpleGestureFilter.SWIPE_LEFT :  str = "Swipe Left";
                                                     break;
      case SimpleGestureFilter.SWIPE_DOWN :  str = "Swipe Down";
                                                     break;
      case SimpleGestureFilter.SWIPE_UP :    str = "Swipe Up";
                                                     break;

      } 
       Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
     }

     public void onDoubleTap() {
        Toast.makeText(this, "Double Tap", Toast.LENGTH_SHORT).show(); 
     }


                /**
                 * Function to login into facebook
                 * */

                private void loginToFacebook() {
                    // TODO Auto-generated method stub
                     {

                    mPrefs = getPreferences(MODE_PRIVATE);
                    String access_token = mPrefs.getString("access_token", null);
                    long expires = mPrefs.getLong("access_expires", 0);

                    if (access_token != null) {
                        facebook.setAccessToken(access_token);





                        Log.d("FB Sessions", "" + facebook.isSessionValid());
                    }

                    if (expires != 0) {
                        facebook.setAccessExpires(expires);
                    }

                    if (!facebook.isSessionValid()) {
                        facebook.authorize(this,
                                new String[] { "email", "publish_stream" },
                                new DialogListener() {

                                    @Override
                                    public void onCancel() {
                                        // Function to handle cancel event
                                    }

                                    @Override
                                    public void onComplete(Bundle values) {
                                        // Function to handle complete event
                                        // Edit Preferences and update facebook acess_token
                                        SharedPreferences.Editor editor = mPrefs.edit();
                                        editor.putString("access_token",
                                                facebook.getAccessToken());
                                        editor.putLong("access_expires",
                                                facebook.getAccessExpires());
                                        editor.commit();

                                                                                }

                                    @Override
                                    public void onError(DialogError error) {
                                        // Function to handle error

                                    }

                                    @Override
                                    public void onFacebookError(FacebookError fberror) {
                                        // Function to handle Facebook errors

                                    }

                                });

                     }else{}
                     }
                     }


                    /**
                     * Function to post to facebook wall
                     * */
                    public void postToWall() {
                         Bundle parameters = new Bundle();
                    parameters.putString("title", "visit us");
                        parameters.putString("link", "http://india.dollardesi.net/ads/metro-logistic-packers-movers/");

                        // post on user's wall.
                        facebook.dialog(this, "feed",parameters, new DialogListener() {

                            @Override
                            public void onFacebookError(FacebookError e) {
                            }

                            @Override
                            public void onError(DialogError e) {
                            }

                            @Override
                            public void onComplete(Bundle values) {
                            }

                            @Override
                            public void onCancel() {
                            }

                        });

                    }       



                    /**
                     * Function to Logout user from Facebook
                     * */
                    public void logoutFromFacebook() {
                        mAsyncRunner.logout(this, new RequestListener() {
                            @Override
                            public void onComplete(String response, Object state) {
                                Log.d("Logout from Facebook", response);
                                if (Boolean.parseBoolean(response) == true) {
                                    runOnUiThread(new Runnable() {

                                        @Override
                                        public void run() {
                                            // make Login button visible
                                            btnFbLogin.setVisibility(View.VISIBLE);


                                        }

                                    });

                                }
                            }

                            @Override
                            public void onIOException(IOException e, Object state) {
                            }

                            @Override
                            public void onFileNotFoundException(FileNotFoundException e,
                                    Object state) {
                            }

                            @Override
                            public void onMalformedURLException(MalformedURLException e,
                                    Object state) {
                            }

                            @Override
                            public void onFacebookError(FacebookError e, Object state) {
                            }

                        });
                    }

                     }

SimpleGestureFilter.java

public class SimpleGestureFilter extends SimpleOnGestureListener{

 public final static int SWIPE_UP    = 1;
 public final static int SWIPE_DOWN  = 2;
 public final static int SWIPE_LEFT  = 3;
 public final static int SWIPE_RIGHT = 4;

 public final static int MODE_TRANSPARENT = 0;
 public final static int MODE_SOLID       = 1;
 public final static int MODE_DYNAMIC     = 2;

 private final static int ACTION_FAKE = -13; //just an unlikely number
 private int swipe_Min_Distance = 100;
 private int swipe_Max_Distance = 350;
 private int swipe_Min_Velocity = 100;

 private int mode      = MODE_DYNAMIC;
 private boolean running = true;
 private boolean tapIndicator = false;

 private Activity context;
 private GestureDetector detector;
 private SimpleGestureListener listener;


 public SimpleGestureFilter(Activity context,SimpleGestureListener sgl) {

  this.context = context;
  this.detector = new GestureDetector(context, this);
  this.listener = sgl; 
 }

 public void onTouchEvent(MotionEvent event){

   if(!this.running)
  return;  

   boolean result = this.detector.onTouchEvent(event); 

   if(this.mode == MODE_SOLID)
    event.setAction(MotionEvent.ACTION_CANCEL);
   else if (this.mode == MODE_DYNAMIC) {

     if(event.getAction() == ACTION_FAKE) 
       event.setAction(MotionEvent.ACTION_UP);
     else if (result)
       event.setAction(MotionEvent.ACTION_CANCEL); 
     else if(this.tapIndicator){
      event.setAction(MotionEvent.ACTION_DOWN);
      this.tapIndicator = false;
     }

   }
   //else just do nothing, it's Transparent
 }

 public void setMode(int m){
  this.mode = m;
 }

 public int getMode(){
  return this.mode;
 }

 public void setEnabled(boolean status){
  this.running = status;
 }

 public void setSwipeMaxDistance(int distance){
  this.swipe_Max_Distance = distance;
 }

 public void setSwipeMinDistance(int distance){
  this.swipe_Min_Distance = distance;
 }

 public void setSwipeMinVelocity(int distance){
  this.swipe_Min_Velocity = distance;
 }

 public int getSwipeMaxDistance(){
  return this.swipe_Max_Distance;
 }

 public int getSwipeMinDistance(){
  return this.swipe_Min_Distance;
 }

 public int getSwipeMinVelocity(){
  return this.swipe_Min_Velocity;
 }


 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
   float velocityY) {

  final float xDistance = Math.abs(e1.getX() - e2.getX());
  final float yDistance = Math.abs(e1.getY() - e2.getY());

  if(xDistance > this.swipe_Max_Distance || yDistance > this.swipe_Max_Distance)
   return false;

  velocityX = Math.abs(velocityX);
  velocityY = Math.abs(velocityY);
        boolean result = false;

  if(velocityX > this.swipe_Min_Velocity && xDistance > this.swipe_Min_Distance){
   if(e1.getX() > e2.getX()) // right to left
    this.listener.onSwipe(SWIPE_LEFT);
   else
    this.listener.onSwipe(SWIPE_RIGHT);

   result = true;
  }
  else if(velocityY > this.swipe_Min_Velocity && yDistance > this.swipe_Min_Distance){
   if(e1.getY() > e2.getY()) // bottom to up 
    this.listener.onSwipe(SWIPE_UP);
   else
    this.listener.onSwipe(SWIPE_DOWN);

   result = true;
  }

   return result;
 }

 @Override
 public boolean onSingleTapUp(MotionEvent e) {
  this.tapIndicator = true;
  return false;
 }

 @Override
 public boolean onDoubleTap(MotionEvent arg0) {
  this.listener.onDoubleTap();;
  return true;
 }

 @Override
 public boolean onDoubleTapEvent(MotionEvent arg0) {
  return true;
 }

 @Override
 public boolean onSingleTapConfirmed(MotionEvent arg0) {

  if(this.mode == MODE_DYNAMIC){        // we owe an ACTION_UP, so we fake an       
     arg0.setAction(ACTION_FAKE);      //action which will be converted to an ACTION_UP later.                                    
     this.context.dispatchTouchEvent(arg0);  
  }   

  return false;
 }


    static interface SimpleGestureListener{
     void onSwipe(int direction);
     void onDoubleTap();
 }

}

解决方案

change

 case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
     break;

to

case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
         //Fire intent to your detail activity here
         break;

I hope I am closer to your solution.

这篇关于刷卡ListView项详细的活动向左或向右的Andr​​oid滑动查看的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆