diff --git a/Component/Channel/Channel.js b/Component/Channel/Channel.js index 94145c2..04a1812 100644 --- a/Component/Channel/Channel.js +++ b/Component/Channel/Channel.js @@ -68,12 +68,14 @@ export default class Channel extends Component{ for(var i = 0;i< this.state.cateData.length;i++) { - if(i % 2 == 0){ + if(i % 2 == 0 && (i + 1)<=this.state.cateData.length){ + let data1 = (i <= this.state.cateData.length-1) ? this.state.cateData[i]:undefined; + let data2 = ((i + 1) <= this.state.cateData.length-1) ? this.state.cateData[i+1]:undefined; let row = ( {/*hello*/} - - - @@ -150,7 +154,7 @@ retry() { loadDataFromNet(){ - request.get(config.api.base + 'ysapi/v1/channel/all',{ + request.get(config.api.base + 'seaapi/v1.Channel/getChannels',{ }).then( (responseData)=>{ @@ -161,14 +165,12 @@ retry() { cateData = jsonData.map(data => { let dic={}; - dic['typeid'] = data['typeid']; - dic['name'] = data['typename']; + dic['typeid'] = data['tid']; + dic['name'] = data['tname']; dic['total'] = data['total']; return dic; }) - - this.setState( { pageLoading: false, @@ -209,18 +211,18 @@ retry() { class CateItem extends Component{ constructor(props) { super(props); - console.log('cateItem init'); + console.log('cateitem init'); + console.log(props); } render() { - + if(this.props.data){ return ( - @@ -231,14 +233,13 @@ class CateItem extends Component{ {this.props.data.total} - - - - - ); + }else{ + return + } + } diff --git a/Component/Channel/ChannelDetail.js b/Component/Channel/ChannelDetail.js index 9dd76f7..1c41475 100644 --- a/Component/Channel/ChannelDetail.js +++ b/Component/Channel/ChannelDetail.js @@ -26,6 +26,7 @@ import LoadImage from '../Until/LoadImage'; import RetryView from '../Widget/RetryView'; import LoadingView from '../Widget/LoadingView'; import Orientation from 'react-native-orientation'; +import YSNativeModule from '../Native/YSNativeModule' var cols = 3; var space = 8; @@ -125,17 +126,18 @@ export default class ChannelDetail extends Component{ return( { - const { navigate } = this.props.navigation; - navigate('VideoDetail',rowdata.item); + // const { navigate } = this.props.navigation; + // navigate('VideoDetail',rowdata.item); + YSNativeModule.goToVideoDetailWithId(rowdata.item.v_id); } }> - + 8.0 - {rowdata.item.title} + {rowdata.item.v_name} @@ -191,9 +193,9 @@ export default class ChannelDetail extends Component{ } loadDataFromNet(page){ - + const { params } = this.props.navigation.state; - request.post(config.api.base + 'ysapi/v1/rank/getrank',{ + request.post(config.api.base + 'seaapi/v1.Rank/getRankByid',{ typeid:params.typeid, page:this.cachedResults.nextPage, pageSize:12, diff --git a/Component/Home/AdHeader.js b/Component/Home/AdHeader.js index ee1fba2..56ffae0 100644 --- a/Component/Home/AdHeader.js +++ b/Component/Home/AdHeader.js @@ -117,7 +117,7 @@ export default class AdHeader extends Component{ const { navigate } = this.props.navigation; navigate('VideoDetail',imgItem); } }> - + ); } diff --git a/Component/Home/ContentListCell.js b/Component/Home/ContentListCell.js index 61c9370..bacb402 100644 --- a/Component/Home/ContentListCell.js +++ b/Component/Home/ContentListCell.js @@ -67,12 +67,12 @@ export default class ContentLIstCell extends Component{ navigate('VideoDetail',rowdata); } }> - + {'8分'} - {rowdata.title} + {rowdata.v_name} diff --git a/Component/Home/Home.js b/Component/Home/Home.js index 9c52603..407f754 100644 --- a/Component/Home/Home.js +++ b/Component/Home/Home.js @@ -122,10 +122,10 @@ export default class Home extends Component{ Orientation.lockToPortrait(); this.loadDataFromNet(); } - // https://localhost:8888/TP5.0/public/index.php/ysapi/v1.HomePage/getHomeData + loadDataFromNet(){ console.log('loadDataFromNet'); - request.get(config.api.base + 'ysapi/v1.HomePage/getHomeData',{ + request.get(config.api.base + 'seaapi/v1.HomePage/getHomeData',{ }).then( (responseData)=>{ @@ -155,7 +155,7 @@ export default class Home extends Component{ listDataArr.push(jsonData['tv_list']); listDataArr.push(jsonData['arts_list']); listDataArr.push(jsonData['comic_list']); - listDataArr.push(jsonData['korean_iist']); + // 更新状态机 this.setState({ diff --git a/Component/Rank/Rank.js b/Component/Rank/Rank.js index 9b4444e..9af2f7d 100644 --- a/Component/Rank/Rank.js +++ b/Component/Rank/Rank.js @@ -58,10 +58,10 @@ export default class Rank extends Component{ tabBarInactiveTextColor='#262626' tabBarTextStyle={{fontSize: 14}} > - - - - + + + + @@ -229,7 +229,7 @@ class VideoList extends Component { loadDataFromNet(page){ - request.post(config.api.base + 'ysapi/v1.Rank/getRankByid',{ + request.post(config.api.base + 'seaapi/v1.Rank/getRankByid',{ typeid:this.props.type, page:page }).then( @@ -296,15 +296,18 @@ class VideoList extends Component { } }> {/*左边*/} - + {/*右边*/} - - {rowData.title} + + {rowData.v_name} - + + + {rowData.v_actor} + diff --git a/android/app/app-release.apk b/android/app/app-release.apk deleted file mode 100644 index 71937e1..0000000 Binary files a/android/app/app-release.apk and /dev/null differ diff --git a/android/app/build.gradle b/android/app/build.gradle index b4baacf..3943b40 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,5 +1,5 @@ apply plugin: "com.android.application" -apply plugin: 'android-apt' +apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'com.mob.sdk' import com.android.build.OutputFile @@ -193,7 +193,7 @@ dependencies { compile 'com.alibaba:fastjson:1.1.54.android' //butterknife compile "com.jakewharton:butterknife:${BUTTERKNIFE_VERSION}" - annotationProcessor "com.jakewharton:butterknife-compiler:${BUTTERKNIFE_VERSION}" + apt "com.jakewharton:butterknife-compiler:${BUTTERKNIFE_VERSION}" compile project(':giraffeplayer') compile files('libs/picasso-2.5.2.jar') compile files('libs/Msc.jar') diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fc3f74a..8bdebfc 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -56,7 +56,9 @@ android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:windowSoftInputMode="adjustResize"> + + > getSearchList(@Field("search") String searc /** * 详情 */ - @GET("/detail/{id}") - Observable> detail(@Path("id") String id); + @GET("seaapi/v1.Play/getPlayData") + Observable> detail(@Query("id") String id); } diff --git a/android/app/src/main/java/com/ysapp/jsmodel/VideoNativeModule.java b/android/app/src/main/java/com/ysapp/jsmodel/VideoNativeModule.java index 28fb727..5d8dc2b 100644 --- a/android/app/src/main/java/com/ysapp/jsmodel/VideoNativeModule.java +++ b/android/app/src/main/java/com/ysapp/jsmodel/VideoNativeModule.java @@ -10,6 +10,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.ysapp.entity.DetailEntity; +import com.ysapp.ui.detail.view.DetailActivity; import com.ysapp.ui.search.SearchActivity; @@ -72,6 +73,29 @@ public void run() { }); } } + + @ReactMethod + public void goToVideoDetailWithId(final String id){ + final Activity currentActivity = getCurrentActivity(); + if(null!=currentActivity) { + currentActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + + + Intent intent = new Intent(currentActivity, DetailActivity.class); + intent.putExtra("id", id); + currentActivity.startActivity(intent); + } + + }); + } + } + + + + + @ReactMethod public void getHistory() { diff --git a/android/app/src/main/java/com/ysapp/ui/detail/view/DetailActivity.java b/android/app/src/main/java/com/ysapp/ui/detail/view/DetailActivity.java index 928163d..f87116a 100755 --- a/android/app/src/main/java/com/ysapp/ui/detail/view/DetailActivity.java +++ b/android/app/src/main/java/com/ysapp/ui/detail/view/DetailActivity.java @@ -176,6 +176,7 @@ private List getItems(DetailEntity entity) { lst.add(new Item("简介", fragment)); switch (entity.type) { case 1: + //电影 fragment = new CommentsFragment(); fragment.setArguments(bundle); lst.add(0, new Item("影评(" + (entity.comment_list != null ? entity.comment_list.size() : 0) + ")", fragment)); diff --git a/android/app/src/main/java/com/ysapp/widget/JustifyTextView.java b/android/app/src/main/java/com/ysapp/widget/JustifyTextView.java new file mode 100755 index 0000000..4fbd1ba --- /dev/null +++ b/android/app/src/main/java/com/ysapp/widget/JustifyTextView.java @@ -0,0 +1,118 @@ +package com.ysapp.widget; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.text.Layout; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.util.AttributeSet; +import android.widget.TextView; + +/** + * @author ccheng + * @Date 3/18/14 + */ +public class JustifyTextView extends TextView { + + private int mLineY; + private int mViewWidth; + public static final String TWO_CHINESE_BLANK = " "; + + public JustifyTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, + int bottom) { + super.onLayout(changed, left, top, right, bottom); + } + + @Override + protected void onDraw(Canvas canvas) { + TextPaint paint = getPaint(); + paint.setColor(getCurrentTextColor()); + paint.drawableState = getDrawableState(); + mViewWidth = getMeasuredWidth(); + String text = getText().toString(); + mLineY = 0; + mLineY += getTextSize(); + Layout layout = getLayout(); + + // layout.getLayout()在4.4.3出现NullPointerException + if (layout == null) { + return; + } + + Paint.FontMetrics fm = paint.getFontMetrics(); + + int textHeight = (int) (Math.ceil(fm.descent - fm.ascent)); + textHeight = (int) (textHeight * layout.getSpacingMultiplier() + layout + .getSpacingAdd()); + + for (int i = 0; i < layout.getLineCount(); i++) { + int lineStart = layout.getLineStart(i); + int lineEnd = layout.getLineEnd(i); + float width = StaticLayout.getDesiredWidth(text, lineStart, + lineEnd, getPaint()); + String line = text.substring(lineStart, lineEnd); + if (needScale(line)) { + if (i == layout.getLineCount() - 1) { + canvas.drawText(line, 0, mLineY, paint); + } else { + drawScaledText(canvas, lineStart, line, width); + } + } else { + canvas.drawText(line, 0, mLineY, paint); + } + mLineY += textHeight; + } + } + + private void drawScaledText(Canvas canvas, int lineStart, String line, + float lineWidth) { + float x = 0; + if (isFirstLineOfParagraph(lineStart, line)) { + String blanks = " "; + canvas.drawText(blanks, x, mLineY, getPaint()); + float bw = StaticLayout.getDesiredWidth(blanks, getPaint()); + x += bw; + + line = line.substring(3); + } + + int gapCount = line.length() - 1; + int i = 0; + if (line.length() > 2 && line.charAt(0) == 12288 + && line.charAt(1) == 12288) { + String substring = line.substring(0, 2); + float cw = StaticLayout.getDesiredWidth(substring, getPaint()); + canvas.drawText(substring, x, mLineY, getPaint()); + x += cw; + i += 2; + } + + float d = (mViewWidth - lineWidth) / gapCount; + for (; i < line.length(); i++) { + String c = String.valueOf(line.charAt(i)); + float cw = StaticLayout.getDesiredWidth(c, getPaint()); + canvas.drawText(c, x, mLineY, getPaint()); + x += cw + d; + } + } + + private boolean isFirstLineOfParagraph(int lineStart, String line) { + return line.length() > 3 && line.charAt(0) == ' ' + && line.charAt(1) == ' '; + } + + private boolean needScale(String line) { + if (line == null || line.length() == 0) { + return false; + } else { + return line.charAt(line.length() - 1) != '\n'; + } + } + +} diff --git a/android/app/src/main/res/layout/activity_detail.xml b/android/app/src/main/res/layout/activity_detail.xml index 2f1a87e..c136d45 100755 --- a/android/app/src/main/res/layout/activity_detail.xml +++ b/android/app/src/main/res/layout/activity_detail.xml @@ -81,7 +81,7 @@ android:paddingLeft="14dp" android:paddingRight="14dp"> - - @@ -157,7 +157,7 @@ android:textSize="12dp" /> - - - - -